Come posso disattivare la funzionalità "incolla del pulsante centrale del mouse" in tutti i programmi?


43

Non mi piace incollare il pulsante centrale del mouse, perché finisco spesso con il codice non compilabile in Eclipse. Come posso disattivarlo (in tutti i programmi)? Sto correndo Fedora.


4
Il clic centrale per inserire la selezione è fondamentalmente parte del modo in cui X11 funziona; vedi http://www.jwz.org/doc/x-cut-and-paste.html .
effimero

1
@Gilles: in tutti i programmi. :)
derekhh,

4
Non ho visto alcun modo banale per farlo senza appannare del tutto il pulsante centrale del mouse o hackerare X o avvitarlo anche con i normali appunti, quindi la mia "soluzione" suggerita è solo quella di imparare a usare correttamente il pulsante centrale del mouse. È incredibilmente conveniente essere in grado di evidenziare un URL di testo ovunque e accedervi facendo clic centrale nella finestra del mio browser (FF).
jw013,

4
@ephemient "Il clic centrale per inserire la selezione è fondamentalmente parte del modo in cui X11 funziona" ... molto tempo fa quando avevamo i mouse ottici Sun che avevano bisogno di circa 1 chilo di pressione sul pulsante centrale per ottenere il segnale. Oggi il pulsante centrale è sul grilletto dei capelli e inoltre usato come una ruota, questo "fondamentale" deve andare (come un sacco di roba "fondamentale" in X btw.)
David Tonhofer

3
Sento che la capacità di disabilitare ciò che vuoi è un aspetto ancora più fondamentale di Linux.
Wayne Bloss,

Risposte:


24

Questa soluzione funzionerà a livello globale e preserverà la funzionalità del mouse centrale.

Installare xbindkeys xsel xdotool

Metti questo dentro ~/.xbindkeysrc

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

Ricaricare xbindkeys -p

Esegui xbindkeysall'avvio, pkill xbindkeysper interrompere.


7
Grazie!!! Non posso credere che l'unica soluzione funzionante sia stata seduta a 0 voti per esattamente 2 anni.
Retr0id

4
Finalmente una soluzione che ha funzionato per me su Ubuntu Mate 17.10. Grazie!
Dmitry Frank,

5
@spiil Ho provato questa soluzione e ottiene l'effetto desiderato. Ho fatto clic con il tasto centrale in un campo di testo e non succede nulla, ma facendo clic con il tasto centrale su un collegamento e facendo clic con il tasto centrale per chiudere una scheda in Chromium, Firefox e Waterfox (i tre browser che ho testato).
user7214865

4
Lo scorrimento con il pulsante centrale "fai clic e tieni premuto" non funziona più con questa soluzione: /
Marc.2377

2
Sei una leggenda. Ho usato il pulsante centrale sulla trackball per scopi di scorrimento, ma la funzionalità incolla ha reso la mia vita miserabile. Ora è di nuovo in colori pieni e luminosi, grazie!
redsPL

16

In Fedora 24 puoi installarlo gnome-tweak-toolusando il seguente comando:

$ sudo dnf install gnome-tweak-tool

Apri gnome-tweak-toole vai alla scheda "Tastiera e mouse" e disabilita "Incolla-clic-centrale".


4
Questo è disponibile anche in Ubuntu 16.04: sudo apt-get install gnome-tweak-tool
Tyranin

1
Questo riguarda solo alcuni programmi come gedit, gnome-terminal e pochi altri. Vedi anche il commento su askubuntu.com/questions/4507/… .
Kvothe

11

Avere il pulsante centrale incolla è uno standard dell'interfaccia utente unix, come se il pulsante sinistro selezioni o si attivi e il pulsante destro fa qualcos'altro (come estendere, attivare o disattivare un menu, ...). Lo troverai incollato nella maggior parte delle applicazioni unix.

Se il tuo problema è che il tuo mouse è troppo sensibile quando metti il ​​dito sul volante, ti suggerisco di ottenere un mouse migliore. Ci sono molti topi decenti a buon mercato.

È possibile riassegnare il pulsante del mouse 2 a un numero diverso. Le applicazioni identificano i pulsanti sinistro, centrale e destro del mouse rispettivamente come pulsanti 1, 2 e 3. Inserisci questo codice in uno script che viene eseguito all'avvio della tua sessione X (come farlo dipende dal tuo ambiente desktop).

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

1
Non funziona. pastebin.com/0DYYMDLS
balki,

@balki Weird. Funziona sicuramente per me. Quindi, per scoprire perché non funziona per te, fai una nuova domanda. Assicurati di menzionare quale versione di X.org (o altro server X) hai, su quale distribuzione stai eseguendo e su quali dispositivi di input sono collegati.
Gilles 'SO- smetti di essere malvagio' il

2
Scommetto che a OP non importa se è standard (so di no). Non importa Le azioni dei pulsanti del mouse dovrebbero essere più facilmente personalizzabili.
Marc.2377

7

I mouse Scrollwheel supportano un evento clic del pulsante centrale quando si preme la rotellina. Questa è un'ottima funzionalità, ma potresti trovarla irritante. Fortunatamente può essere disabilitato.

Innanzitutto, devi conoscere l'id del mouse, in questo modo:

$ xinput list | grep 'id='

che stampa qualcosa di simile

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

Il mio mouse USB Dell è stato stampato qui per il quale id = 12

così, posso visualizzare la mappatura del mio pulsante del mouse come:

$ xinput get-button-map 12

quale stampa

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

qui solo i primi tre numeri hanno un significato per me. Rappresentano i pulsanti sinistro, centrale e destro del mouse.

Posso disattivare il pulsante centrale del mouse impostandolo su 0:

$ xinput set-button-map 12 1 0 3

Oppure posso trasformare il pulsante centrale del mouse in un pulsante sinistro del mouse impostandolo su 1:

$ xinput set-button-map 12 1 1 3

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

funziona per me (kubuntu 18.04 LTS)


Funziona perfettamente con il touchpad in Slackware 14.2 (KDE).
Firelord,

Questo è meglio di uno dei precedenti che iniziano con "download XX". L'unico problema che ho avuto è che xinput set-button-map 12 1 0 3hai impostato tutti i pulsanti (1-12 per in questo esempio xinput set-button-map 12 1 0 3 4 5 6 7 8 9 10 11 12)
blindguy

3

Ecco cosa puoi fare se vuoi mantenere funzionale il clic centrale (per fare clic per aprire i collegamenti in nuove schede, ad esempio) senza incollare le cose.

Prima installa sxhkd e xsel .

Quindi configurare ./.config/.sxhkd/sxhkdrc in questo modo

~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

E questo è tutto.

Ora avvia sxhkd (o configuralo per l'avvio all'avvio). Ora, il mouse centrale non incollerà più nulla ma funzionerà normalmente.


Ciò ti consente comunque di utilizzare il mouse centrale per lo scorrimento. Buona soluzione! Per me il file era in~/.config/sxhkd/sxhkdrc
Atnas il

1

È una convenzione comune a cui aderiscono molti programmi. Non esiste un modo globale per disattivarlo, è necessario farlo su un programma per programma.

EDIT: (a parte, come dice Gilles, disabilitare il pulsante del mouse 2. Ma alcuni programmi hanno altri usi per il pulsante del mouse 2, quindi non lo consiglierei.)


1

EDIT: ho appena riscontrato un problema con la soluzione che ho pubblicato: in alcuni programmi ( gitkalmeno, non sono sicuro di quanto sia comune) ciò impedirà il funzionamento della selezione del testo. Quindi provalo, ma se hai problemi con la selezione del testo in un programma che usi regolarmente, la soluzione è smettere di usarlo.

Installa xsel, quindi esegui il seguente script di shell:

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

Finché questo script è in esecuzione (puoi impostarlo per essere eseguito all'accesso) il pulsante centrale del mouse non verrà incollato in nessuna applicazione. Quindi tecnicamente incollerà ancora, ma non ci sarà sempre nulla da incollare.

Il modo in cui funziona è che esegue xsele fa copiare ( -i) il contenuto di /dev/null, senza biforcarsi sullo sfondo ( -n), e per contenere effettivamente quella stringa vuota nel buffer invece di cancellarla ed uscire ( -f). Ogni volta che esce, invocherà di xselnuovo con le stesse opzioni. Dal momento xselche continuerà a funzionare fino a quando un altro programma "lo alleggerirà dal dovere" copiando qualcos'altro, non creerà costantemente nuovi processi, mantenendo un singolo processo in esecuzione esattamente fino a quando non sarà nuovamente necessario. (A meno che tu non abbia più istanze dello script in esecuzione, ma non è necessario farlo.)

Inoltre no, ciò non interferirà con il normale copia / incolla, poiché l'incollamento con clic centrale utilizza un blocco appunti separato.


Grazie! Uso KDE e questa soluzione è L'UNICA che funziona per me.
Aloso

@Aloso Prego, tieni a mente l'avvertenza in alto. Se mai ti ritrovi incapace di selezionare il testo in un programma, questo è probabilmente il colpevole.
flarn2006,

Sì, ho notato questo problema nella finestra di dialogo "Salva file" di Firefox. Ora accendo questo script solo quando sto programmando.
Aloso,

@Aloso Va bene allora; felice che ti sia ancora utile :)
flarn2006,

0

Questa è la mia sceneggiatura. Potrebbe essere necessario apportare modifiche

#!/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 ---------------------------------------------------------------------------------
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.