Jak mogę wyłączyć funkcję „wklejania środkowego przycisku myszy” we wszystkich programach?

43

Nie lubię wklejać środkowego przycisku myszy, ponieważ często kończę na niekompilowalnym kodzie w Eclipse. Jak mogę to wyłączyć (we wszystkich programach)? Używam Fedory.

derekhh
źródło
4
Kliknięcie środkowym przyciskiem myszy, aby wstawić zaznaczenie, jest zasadniczo częścią działania X11; patrz http://www.jwz.org/doc/x-cut-and-paste.html .
ephemient
1
@Gilles: We wszystkich programach. :)
derekhh
4
Nie widziałem żadnego trywialnego sposobu na zrobienie tego bez całkowitego naciśnięcia środkowego przycisku myszy lub zhakowania X lub wkręcenia normalnego schowka, więc moim sugerowanym „rozwiązaniem” jest po prostu nauczyć się prawidłowo używać środkowego przycisku myszy. Niezwykle wygodne jest wyróżnienie tekstowego adresu URL w dowolnym miejscu i przejście do niego poprzez kliknięcie środkowym przyciskiem myszy w oknie mojej przeglądarki (FF).
jw013,
4
@ephemient „Kliknięcie środkowym przyciskiem myszy, aby wstawić zaznaczenie, jest zasadniczo częścią sposobu działania X11”… dawno temu, kiedy mieliśmy myszy optyczne Sun, które potrzebowały około 1 funta nacisku na środkowy przycisk, aby uzyskać sygnał. Dziś środkowy przycisk znajduje się na spuście włosów, a ponadto jest używany jako koło, ten „fundamentalny” musi odejść (jak całkiem sporo „podstawowych” rzeczy w X btw.)
David Tonhofer
3
Wydaje mi się, że możliwość wyłączenia wszystkiego, co chcesz, jest jeszcze bardziej fundamentalnym aspektem Linuksa.
Wayne Bloss,

Odpowiedzi:

24

To rozwiązanie będzie działać globalnie i pozwoli zachować funkcjonalność środkowej myszy.

zainstalować xbindkeys xsel xdotool

Umieść to w ~/.xbindkeysrc

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

Przeładować xbindkeys -p

Uruchom xbindkeysprzy starcie, pkill xbindkeysaby zatrzymać.

Radivarig
źródło
7
Dziękuję Ci!!! Nie mogę uwierzyć, że jedynym działającym rozwiązaniem było 0 głosów przez dokładnie 2 lata.
Retr0id
4
Wreszcie rozwiązanie, które działało dla mnie na Ubuntu Mate 17.10. Dziękuję Ci!
Dmitry Frank,
5
@spiil Wypróbowałem to rozwiązanie i osiąga pożądany efekt. Kliknąłem środkowo w polu tekstowym i nic się nie dzieje, ale kliknięcie linkiem i kliknięcie środkowym przyciskiem myszy, aby zamknąć kartę, działa w Chromium, Firefox i Waterfox (trzy testowane przeze mnie przeglądarki).
user7214865
4
Przewijanie za pomocą środkowego przycisku „kliknij i przytrzymaj” nie działa już z tym rozwiązaniem: /
Marc.2377
2
Jesteś legendą Użyłem środkowego przycisku kulki do przewijania, ale funkcja wklejania sprawiła, że ​​moje życie było nieszczęśliwe. Teraz znów jest w jasnych kolorach, dzięki!
redsPL
16

W Fedorze 24 możesz zainstalować, gnome-tweak-toolużywając następującego polecenia:

$ sudo dnf install gnome-tweak-tool

Otwórz gnome-tweak-tooli przejdź do karty „Klawiatura i mysz” i wyłącz „Wklej i kliknij środkowym przyciskiem myszy”.

Pawan Kumar
źródło
4
Jest to również dostępne w Ubuntu 16.04: sudo apt-get install gnome-tweak-tool
Tyranin
1
Wpływa to tylko na kilka programów, takich jak gedit, gnome-terminal i kilka innych. Zobacz także komentarz na askubuntu.com/questions/4507/… .
Kvothe
11

Wklejanie środkowego przycisku jest standardem interfejsu użytkownika unix, na przykład wybieranie lub aktywowanie lewego przycisku, a prawy przycisk wykonuje inne czynności (takie jak rozszerzanie, przełączanie, uruchamianie menu,…). W większości aplikacji uniksowych będzie to konieczne.

Jeśli Twoim problemem jest to, że twoja mysz jest zbyt wrażliwa, gdy kładziesz palec na kierownicy, sugeruję uzyskanie lepszej myszy. Istnieje wiele tanich przyzwoitych myszy.

Możesz ponownie przypisać przycisk myszy 2 do innego numeru. Aplikacje identyfikują lewy, środkowy i prawy przycisk myszy odpowiednio jako przycisk 1, 2 i 3. Umieść ten kod w skrypcie, który jest wykonywany, gdy rozpoczyna się sesja X (jak to zrobić, zależy od środowiska pulpitu).

echo 'pointer = 1 6 3 4 5' | xmodmap -
Gilles „SO- przestań być zły”
źródło
1
Nie działa. pastebin.com/0DYYMDLS
balki
@balki Weird. To na pewno działa dla mnie. Aby dowiedzieć się, dlaczego to nie działa, zadaj nowe pytanie. Pamiętaj, aby wspomnieć, którą wersję X.org (lub innego serwera X) posiadasz, na której dystrybucji to uruchamiasz i jakie urządzenia wejściowe są podłączone.
Gilles „SO - przestań być zły”,
2
Założę się, że OP nie dba o to, czy jest to standard (wiem, że nie). Nie ma znaczenia Działania przycisku myszy powinny być łatwiejsze do dostosowania.
Marc.2377,
7

Myszy z kółkiem przewijania obsługują zdarzenie kliknięcia środkowym przyciskiem podczas naciskania kółka do przewijania. Jest to świetna funkcja, ale może być irytująca. Na szczęście można to wyłączyć.

Najpierw musisz znać identyfikator myszy:

$ xinput list | grep 'id='

który drukuje coś podobnego

⎡ 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)]

Wydrukowano tutaj moją mysz Dell Usb, dla której id = 12

więc mogę wyświetlić mapowanie przycisków myszy:

$ xinput get-button-map 12

który drukuje

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

tutaj tylko trzy pierwsze liczby mają dla mnie znaczenie. Reprezentują lewy, środkowy i prawy przycisk myszy.

Mogę wyłączyć środkowy przycisk myszy, ustawiając go na 0:

$ xinput set-button-map 12 1 0 3

Lub mogę zmienić środkowy przycisk myszy w lewy przycisk myszy, ustawiając go na 1:

$ xinput set-button-map 12 1 1 3

ref. link https://wiki.ubuntu.com/X/Config/Input

to działa dla mnie (kubuntu 18.04 LTS)

Suraj Inamdar
źródło
Działa idealnie dla touchpada w Slackware 14.2 (KDE).
Firelord
Jest to lepsze niż którekolwiek z powyższych, które zaczynają się od „pobierz XX”. Jedyny problem, jaki miałem, to to, że dla xinput set-button-map 12 1 0 3ciebie ustaw wszystkie przyciski (1 - 12 dla w tym przykładzie xinput set-button-map 12 1 0 3 4 5 6 7 8 9 10 11 12)
blindguy
3

Oto, co możesz zrobić, jeśli chcesz zachować funkcjonalność środkowego kliknięcia (na przykład klikanie, aby otworzyć łącza w nowych kartach) bez wklejania.

Najpierw zainstaluj sxhkd i xsel .

Następnie skonfiguruj ./.config/.sxhkd/sxhkdrc w ten sposób

~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

I w zasadzie to wszystko.

Teraz uruchom sxhkd (lub skonfiguruj, aby uruchamiał się przy starcie). Teraz środkowa mysz nie będzie już niczego wklejać, ale w przeciwnym razie będzie działać normalnie.

Cestarian
źródło
To wciąż pozwala używać środkowej myszy do przewijania. Dobre rozwiązanie! Dla mnie plik był w~/.config/sxhkd/sxhkdrc
Atnas
1

Jest to powszechna konwencja, której przestrzega wiele programów. Nie ma globalnego sposobu, aby to wyłączyć, musisz to zrobić dla poszczególnych programów.

EDYCJA: (krótko, jak mówi Gilles, wyłączenie przycisku myszy 2. Ale niektóre programy mają inne zastosowania dla przycisku myszy 2, więc nie poleciłbym tego.)

wnoise
źródło
1

EDYCJA: Właśnie znalazłem problem z opublikowanym przeze mnie rozwiązaniem: w niektórych programach ( gitkprzynajmniej nie jestem pewien, jak często jest to powszechne) uniemożliwi to działanie zaznaczania tekstu. Spróbuj więc, ale jeśli masz problemy z zaznaczaniem tekstu w programie, z którego regularnie korzystasz, rozwiązaniem jest zaprzestanie korzystania z niego.

Zainstaluj xsel, a następnie uruchom następujący skrypt powłoki:

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

Tak długo, jak ten skrypt jest uruchomiony (możesz ustawić, aby był uruchamiany podczas logowania) środkowy przycisk myszy nie wkleja się w żadnej aplikacji. Więc technicznie nadal będzie wklejać, ale zawsze nie będzie nic do wklejenia.

Sposób działania polega na tym, że działa xseli kopiuje ( -i) zawartość /dev/null, bez przechodzenia do tła ( -n), i faktycznie przechowuje ten pusty ciąg w buforze zamiast go po prostu wyczyścić i wyjść ( -f). Za każdym razem, gdy wyjdzie, będzie wywoływał xselponownie z tymi samymi opcjami. Ponieważ xselbędzie działał do momentu, aż inny program „zwolni go z obowiązku” poprzez skopiowanie czegoś innego, nie będzie stale tworzyć nowych procesów, zamiast tego utrzyma działanie jednego procesu dokładnie, dopóki nie będzie ponownie potrzebny. (Chyba że masz wiele wystąpień skryptu, ale nie musisz tego robić).

Również nie, nie będzie to zakłócać zwykłego kopiowania / wklejania, ponieważ wklejanie środkowym kliknięciem używa osobnego schowka.

flarn2006
źródło
Dziękuję Ci! Używam KDE, a to rozwiązanie jest TYLKO tym, które działa dla mnie.
Aloso,
@Aloso Nie ma za co, pamiętaj o zastrzeżeniu u góry. Jeśli kiedykolwiek nie możesz wybrać tekstu w programie, najprawdopodobniej jest to winowajcą.
flarn2006
Tak, zauważyłem ten problem w oknie dialogowym „Zapisz plik” w przeglądarce Firefox. Teraz włączam ten skrypt tylko podczas programowania.
Aloso
@Aloso Dobrze więc; cieszę się, że wciąż się
przydaje
0

To jest mój skrypt. Twoje może wymagać ulepszenia

#!/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 ---------------------------------------------------------------------------------
Max Robbertze
źródło