Crea mouse mancini e touchpad destro

8

Vedo che posso configurare mouse e touchpad in un pannello (Ubuntu 13.10, default, Gnome). Qual è in qualche modo. Vale a dire, voglio che il touchpad sia configurato diversamente dal mouse e ...

Quando ho un mouse (USB) collegato, lo uso normalmente con la mano sinistra. Quindi cambio i pulsanti a mano sinistra. Ma quando uso il touchpad mi sento un po 'perso con quel tipo di configurazione. Quindi voglio averlo con la mano destra.

C'è un modo per ottenere quanto segue: quando plugo un mouse (rispettivamente quando viene rilevato) passa automaticamente a mancino e quando lo scollego, passa automaticamente a destrorso?

    
posta LeO 14.11.2013 - 17:12

4 risposte

9

Comprendo la tua frustrazione, ma questo problema può essere risolto in modo molto semplice con l'aiuto dello strumento xinput .

Per prima cosa collega il mouse USB, quindi esegui il seguente comando:

xinput list

per vedere il id del tuo mouse. L'output del comando precedente può essere simile a:

xinput | cat
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=14   [slave  pointer  (2)]
⎜   ↳ USB Mouse                                 id=11   [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ...

Nell'esempio precedente il mouse USB ha id=11 . Utilizzeremo questo id nel seguente comando, che scambierà i pulsanti per mancini solo per il mouse USB (e non per tauchpad):

xinput set-button-map 11 3 2 1

In generale:

xinput set-button-map id 3 2 1

Per annullare la modifica, utilizzare:

xinput set-button-map id 1 2 3

Per apportare la modifica in modo permanente, aggiungi il seguente comando in Applicazioni di avvio (cerca in Dash per Applicazioni di avvio ):

sh -c "xinput set-button-map id 3 2 1"

Aggiornamento:

Poiché l' id potrebbe cambiare dopo il riavvio ma non il nome di USBmouse, potresti anche grep per il nome del mouse e applicarlo. Per saltare i dettagli reg. selezionando il nome la soluzione finale assomiglia a:

for id in '/usr/bin/xinput list | /bin/grep 'USB Mouse' | /bin/grep -o [0-9][0-9]'; do xinput set-button-map $id 3 2 1; done;

comprimilo nelle Applicazioni di avvio sopra menzionate per ottenere finalmente:

sh -c "for id in '/usr/bin/xinput list | /bin/grep 'USB Mouse' | /bin/grep -o [0-9][0-9]'; do xinput set-button-map $id 3 2 1; done;"
    
risposta data Radu Rădeanu 14.11.2013 - 17:55
8

C'è un modo ancora più semplice che nella risposta di Radu Rădeanu . xinput accetta il nome del dispositivo di input in alternativa al suo ID numerico. Poiché il tuo mouse USB è probabilmente trattato in modo generico, il suo nome è molto probabilmente USB Mouse . Pertanto probabilmente non hai nemmeno bisogno di eseguire xinput list .

Quindi il tuo xinput set-button-map , con questo nome al posto dell'ID numerico, diventa:

xinput set-button-map "USB Mouse" 3 2 1

Questo prende il posto di xinput set-button-map id 3 2 1 e dovrebbe raggiungere la stessa cosa, con 3 2 1 che lo rende un mouse mancino, proprio come quando modo ID numerico utilizzato. (E sostituire 3 2 1 con 1 2 3 continuerà a funzionare per trasformarlo in un mouse destrorso.)

Questo ha il vantaggio che, a condizione che funzioni inizialmente, continuerà a funzionare attraverso i reboot, senza dover ottenere il numero ID del dispositivo usando comandi lunghi e complessi.

    
risposta data reedstrm 04.09.2014 - 16:21
1

Ho trovato che il comando di avvio nell'altra risposta funziona solo se l'ID è un numero a due cifre. Ecco le mie modifiche che dovrebbero funzionare sia per numeri a una che a due cifre:

In Applicazioni di avvio

bash -c "for id in '/usr/bin/xinput list | /bin/grep 'USB Mouse' | /bin/grep -o id=[0-9][0-9]*'; do xinput set-button-map ${id:3} 3 2 1; done;"
    
risposta data robbie 30.03.2014 - 13:26
0
device_id=$(/usr/bin/xinput list \
            | /bin/grep 'slave  pointer' \
            | /bin/grep 'Wireless Keyboard&Mouse' \
            | tr " " "\n" \
            | /bin/grep "id=" \
            | /bin/grep -o [0-9][0-9]* \
        )
/usr/bin/xinput set-button-map $device_id 3 2 1 

Ecco una soluzione più prolissa che risolve due problemi:

  • Funziona con ID dispositivo con un numero qualsiasi di cifre (uguale alla soluzione @robbie, ma scritto un po 'diverso)
  • ritiene che il nome del dispositivo possa essere duplicato. Nel mio caso, ho un mouse + tastiera wireless, quindi xinput list mostra 2 voci con lo stesso nome ("2.4G Wireless Keyboard & amp; Mouse") tranne uno che dice "[slave pointer (2)]" e l'altro dice " [tastiera slave (3)] ". Così con la soluzione @reedstrm ho avuto questo errore "Ci sono più dispositivi chiamati '2.4G Wireless Keyboard & amp; Mouse'.", Mentre con la soluzione @Radu Rădeanu, for stava iterando su 2 id, uno per il mouse e uno per la tastiera, con un messaggio di errore "il dispositivo non ha pulsanti" con il secondo.
risposta data matiascelasco 25.08.2017 - 18:41

Leggi altre domande sui tag