Faire de la souris pour gaucher et du touchpad pour droitier

10

Je vois que je peux configurer la souris et le pavé tactile dans un seul panneau (Ubuntu 13.10, par défaut, Gnome). Ce qui est dans une certaine mesure. À savoir, je veux que le pavé tactile soit configuré différemment, puis la souris et ...

Lorsque j'ai une souris (USB) connectée, je l'utilise normalement pour gaucher. Par conséquent, je passe les boutons à gauche. Mais lorsque j'utilise le pavé tactile, je me sens un peu perdu avec ce type de configuration. Par conséquent, je veux l'avoir pour droitier.

Existe-t-il un moyen d'atteindre les objectifs suivants: lorsque je branche une souris (respectivement lorsqu'elle est détectée) passe automatiquement à la main gauche et lorsque je la débranche, passe automatiquement à la main droite?

Leo
la source

Réponses:

10

Je comprends votre frustration, mais ce problème peut être résolu très simplement à l'aide de l' xinputoutil.

Branchez d'abord votre souris USB, puis exécutez la commande suivante:

xinput list

pour voir le idde votre souris. La sortie de la commande ci-dessus peut être similaire à:

xinput | chat
⎡ ID du pointeur du noyau virtuel = 2 [pointeur maître (3)]
⎜ ↳ Noyau du pointeur XTEST noyau virtuel = 4 [pointeur esclave (2)]
⎜ ↳ SynPS / 2 Synaptics TouchPad id = 14 [pointeur esclave (2)]
⎜ ↳ ID souris USB = 11 [pointeur esclave (2)]
⎣ ID du clavier virtuel de base = 3 [clavier maître (2)]
    ...

Dans l'exemple ci-dessus, la souris USB a id=11. Nous utiliserons ceci iddans la commande suivante qui permutera les boutons à gauche uniquement pour la souris USB (et non pour le tauchpad):

xinput set-button-map 11 3 2 1

En général:

xinput set-button-map id 3 2 1

Pour annuler la modification, utilisez:

xinput set-button-map id 1 2 3

Pour le changement de façon permanente, ajoutez la commande suivante à des applications de démarrage (recherche Dash pour les applications de démarrage ):

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

Mettre à jour:

Étant donné que l' ID peut changer après le redémarrage, mais pas le nom de la souris USB, vous pouvez également rechercher le nom de la souris et l'appliquer. Pour ignorer les détails, rég. choisir le nom de la solution finale ressemble à:

pour id dans la liste `/ usr / bin / xinput | / bin / grep ' USB Mouse ' | / bin / grep -o [0-9] [0-9] `; faire xinput set-button-map $ id 3 2 1; terminé;

emballez-le dans les applications de démarrage mentionnées ci-dessus, vous obtiendrez enfin:

sh -c "pour id dans` / 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; "
Radu Rădeanu
la source
2
Je ne sais pas si je devrais éditer votre message ou non. Votre approche m'a donné la bonne direction, mais le problème était / est qu'un redémarrage pourrait changer l'identifiant de la souris. Par conséquent, je l'ai changé en 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;"et cela fonctionne (peut-être qu'il faut se soucier des bons traits d'union). Thx pour l'astuce.
LeO
@LeO Dans mon cas, un redémarrage ne change pas l'ID de la souris. Je n'ai pas testé avec plus de souris ou pour changer la position du port USB.
Radu Rădeanu
@LeO Quoi qu'il en soit, votre idée est très bonne, alors allez-y, veuillez modifier la réponse. Sinon, je le ferai plus tard.
Radu Rădeanu
8

Il y a un moyen encore plus simple que dans la réponse de Radu Rădeanu . xinputaccepte le nom du périphérique d'entrée comme alternative à son ID numérique. Étant donné que votre souris USB est probablement traitée de manière générique, son nom est très probablement USB Mouse. Par conséquent, vous n'avez probablement même pas besoin de courir xinput list.

Ainsi, votre xinput set-button-map, avec ce nom à la place de l'ID numérique, devient:

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

Cela remplace et devrait réaliser la même chose, en en faisant une souris pour gaucher, tout comme lorsque la méthode d'identification numérique est utilisée. (Et le remplacer par fonctionnera toujours pour le transformer en une souris pour droitier.)xinput set-button-map id 3 2 13 2 13 2 11 2 3

Cela a l'avantage que, à condition qu'il fonctionne initialement, il continuera à fonctionner lors des redémarrages, sans avoir à obtenir le numéro d'identification de l'appareil à l'aide de commandes longues et complexes.

reedstrm
la source
1
Cette réponse mérite plus de votes positifs.
Mephisto
Dans mon cas, j'ai une souris + un clavier sans fil, donc xinput listmontre 2 entrées avec le même nom ("2.4G Wireless Keyboard & Mouse") sauf l'une dit "[pointeur esclave (2)]" et l'autre dit "[clavier esclave (3 )] ". Donc, avec votre solution, j'ai cette erreur "Il existe plusieurs appareils nommés" Clavier et souris sans fil 2.4G ".". À l'heure actuelle, j'utilise l'ajout de solution de Radu grep 'slave pointer'. Je me demande si xinput permet de spécifier en quelque sorte que nous faisons référence à un pointeur sans faire tout cela.
matiascelasco
1

J'ai trouvé que la commande de démarrage dans l'autre réponse ne fonctionne que si l'ID est un nombre à deux chiffres. Voici mes modifications qui devraient fonctionner pour les nombres à un et deux chiffres:

Dans les applications de démarrage

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;"
robbie
la source
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 

Voici une solution plus détaillée qui résout deux problèmes:

  • Cela fonctionne pour les identifiants d'appareil avec un nombre quelconque de chiffres (identique à la solution @robbie, mais écrit un peu différent)
  • Considère que le nom de l'appareil peut être dupliqué. Dans mon cas, j'ai une souris + un clavier sans fil, donc xinput listmontre 2 entrées avec le même nom ("2.4G Wireless Keyboard & Mouse") sauf l'une dit "[pointeur esclave (2)]" et l'autre dit "[clavier esclave (3 )] ". Donc, avec la solution @reedstrm, j'ai eu cette erreur "Il y a plusieurs appareils nommés" Clavier et souris sans fil 2.4G ".", Tandis qu'avec la solution @Radu Rădeanu, l' foritération était sur 2 identifiants, un pour la souris et un pour le clavier, ayant un Message d'erreur "l'appareil n'a pas de boutons" avec le second.
matiascelasco
la source