Crea mouse per mancini e touchpad per destrimani


10

Vedo che posso configurare mouse e touchpad in un unico pannello (Ubuntu 13.10, impostazioni predefinite, Gnome). Che è in qualche misura. Vale a dire, voglio avere il touchpad configurato in modo diverso rispetto al mouse e ...

Quando ho un mouse (USB) collegato, lo uso normalmente per mancini. Pertanto cambio i pulsanti a 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 inserisco un mouse (rispettivamente quando viene rilevato) passa automaticamente a mancino e quando lo scollego, passa automaticamente a mancino?

Risposte:


10

Capisco la tua frustrazione, ma questo problema può essere risolto molto semplice con l'aiuto dello xinputstrumento.

Innanzitutto collegare il mouse USB, quindi eseguire il comando seguente:

xinput list

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

xinput | gatto
⎡ Puntatore core virtuale id = 2 [puntatore master (3)]
⎜ ↳ ID del puntatore XTEST del core virtuale = 4 [puntatore slave (2)]
⎜ ↳ SynPS / 2 Synaptics TouchPad id = 14 [puntatore slave (2)]
⎜ ↳ ID mouse USB = 11 [puntatore slave (2)]
⎣ ID tastiera core virtuale = 3 [tastiera master (2)]
    ...

Nell'esempio sopra il mouse USB ha id=11. Lo useremo idnel seguente comando che scambia i pulsanti per essere mancini solo per il mouse USB (e non per il tauchpad):

xinput set-button-map 11 3 2 1

In generale:

xinput set-button-map id 3 2 1

Per ripristinare la modifica, utilizzare:

xinput set-button-map id 1 2 3

Per apportare la modifica in modo permanente, aggiungere il seguente comando in Applicazioni di avvio (cercare in Dash per applicazioni di avvio ):

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

Aggiornare:

Poiché l' id potrebbe cambiare dopo il riavvio, ma il nome di USBmouse no, è possibile anche grep per il nome del mouse e applicarlo. Per saltare i dettagli reg. individuando il nome appare la soluzione finale:

per id in `/ usr / bin / xinput list | / bin / grep ' Mouse USB ' | / bin / grep -o [0-9] [0-9] `; fare xinput set-button-map $ id 3 2 1; fatto;

comprimilo nelle applicazioni di avvio di cui sopra otterrai finalmente:

sh -c "per id in` / usr / bin / xinput list | / bin / grep ' Mouse USB ' | / bin / grep -o [0-9] [0-9] `; esegui xinput set-button-map $ id 3 2 1; fatto; "

2
Non so se devo modificare il tuo post o no. Il tuo approccio mi ha dato la giusta direzione, ma il problema era / è che un riavvio potrebbe cambiare l'id del mouse. Quindi l'ho cambiato sh -c "for id in '/usr/bin/xinput list | /bin/grep 'Razer' | /bin/grep -o [0-9][0-9]'; do xinput set-button-map $id 3 2 1; done;"e questo funziona (forse bisogna preoccuparsi dei trattini appropriati). Grazie per il suggerimento.
LeO

@LeO Nel mio caso un riavvio, non modifica l'id del mouse. Non ho provato con più mouse o per cambiare la posizione della porta USB.
Radu Rădeanu,

@LeO Ad ogni modo, la tua idea è molto buona, quindi, vai avanti, modifica la risposta. In caso contrario, lo farò in seguito.
Radu Rădeanu,

8

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

Così 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 e dovrebbe raggiungere la stessa cosa, rendendolo un mouse per mancini, proprio come quando viene utilizzato il modo ID numerico . (E la sostituzione con funzionerà ancora per trasformarlo in un mouse per la mano destra.)xinput set-button-map id 3 2 13 2 13 2 11 2 3

Questo ha il vantaggio che, purché funzioni inizialmente, continuerà a funzionare attraverso i riavvii, senza dover ottenere il numero ID del dispositivo utilizzando comandi lunghi e complessi.


1
Questa risposta merita più voti.
Mefisto,

Nel mio caso, ho un mouse + tastiera wireless, quindi xinput listmostra 2 voci con lo stesso nome ("2.4G Wireless Keyboard & Mouse") tranne uno che dice "[puntatore slave (2)]" e l'altro dice "[tastiera slave (3 )]". Quindi con la tua soluzione ho questo errore "Esistono più dispositivi denominati" Tastiera e mouse wireless 2.4G "." Per il momento, sto usando l'aggiunta della soluzione di Radu grep 'slave pointer'. Mi chiedo se xinput permetta di specificare in qualche modo che ci stiamo riferendo a un puntatore senza fare tutto questo.
matiascelasco,

1

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

Nelle 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;"

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ù dettagliata che risolve due problemi:

  • Funziona con ID dispositivo con qualsiasi numero di cifre (uguale alla soluzione @robbie, ma scritto in modo leggermente diverso)
  • Considera che il nome del dispositivo potrebbe essere duplicato. Nel mio caso, ho un mouse + tastiera wireless, quindi xinput listmostra 2 voci con lo stesso nome ("2.4G Wireless Keyboard & Mouse") tranne uno che dice "[puntatore slave (2)]" e l'altro dice "[tastiera slave (3 )]". Quindi, con la soluzione @reedstrm ho avuto questo errore "Ci sono più dispositivi denominati 'della tastiera 2.4G e del mouse'.", Mentre con la soluzione @Radu Rădeanu, l' forera iterare su 2 ids, uno per il mouse e uno per la tastiera, con un Messaggio di errore "il dispositivo non ha pulsanti" con il secondo.
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.