web-dev-qa-db-fra.com

Remapper un bouton de la souris pour agir comme clé de contrôle

J'ai la souris Logitech darkfeild (celle qui fonctionne sur le verre) et je me demandais comment remapper un de mes boutons inutilisés (mon bouton de zoom) pour qu'il fonctionne comme un bouton du clavier sélectionné (contrôle ou souper)? .... J'utilise aussi 13.04 .... FYI.

Merci

5
powell4076
2
Alessio Tomelleri

Certains environnements de bureau (DE) combinés à divers gestionnaires de fenêtres (WM) peuvent permettre de nombreuses fonctionnalités avec les entrées de la souris. Toutefois, il est possible que cela ne couvre pas ce paramètre obscur que nous souhaitons modifier. Dans mon cas, j'utilise des souris Logitech M510 sur toutes mes machines, mais plutôt que d'utiliser les boutons de navigation "Précédent" et "Précédent" (les boutons situés près du pouce) pour naviguer sur Internet, je préfère les utiliser pour le bouton central de la souris. . Sinon, lorsque je passe une heure ou plus à modéliser dans Blender, mon majeur sera douloureux. Pour effectuer ce changement, je dois configurer le périphérique X lui-même à l'aide de la commande "xinput".

Je dois d’abord trouver le périphérique avec lequel nous souhaitons travailler, dans ce cas, ma souris Logitech M510. Pour ce faire, commencez par répertorier tous les périphériques X à l’aide de la commande xinput, comme suit:

$ xinput
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Microsoft Natural® Ergonomic Keyboard 4000        id=11   [slave  pointer  (2)]
⎜   ↳ Logitech Unifying Device. Wireless PID:1025       id=12   [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=15   [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)]
     ↳ Microsoft Natural® Ergonomic Keyboard 4000        id=10   [slave  keyboard (3)]
     ↳ BisonCam, NB Pro                          id=13   [slave  keyboard (3)]
     ↳ AT Translated Set 2 keyboard              id=14   [slave  keyboard (3)]

Notez que ma souris se trouve sous le pointeur du noyau virtuel et le point auquel elle est connectée à l’ordinateur (via USB) comme identifiant de périphérique X = 12. Non pas que nous en ayons besoin, mais parce que c'est agréable à savoir, si nous avions besoin de plus de détails sur le périphérique, nous ferions ce qui suit (où 12 est l'ID de périphérique X):

$ xinput list 12
Logitech Unifying Device. Wireless PID:1025     id=12   [slave  pointer  (2)]
        Reporting 7 classes:
                Class originated from: 12. Type: XIButtonClass
                Buttons supported: 24
                Button labels: "Button Left" "Button Middle" "Button Right" "Button Wheel Up" "Button Wheel Down" "Button Horiz Wheel Left" "Button Horiz Wheel Right" "Button Side" "Button Extra" "Button Forward" "Button Back" "Button Task" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown"
                Button state:
                Class originated from: 12. Type: XIValuatorClass
                Detail for Valuator 0:
                  Label: Rel X
                  Range: -1.000000 - -1.000000
                  Resolution: 1 units/m
                  Mode: relative
                Class originated from: 12. Type: XIValuatorClass
                Detail for Valuator 1:
                  Label: Rel Y
                  Range: -1.000000 - -1.000000
                  Resolution: 1 units/m
                  Mode: relative
                Class originated from: 12. Type: XIValuatorClass
                Detail for Valuator 2:
                  Label: Rel Horiz Wheel
                  Range: -1.000000 - -1.000000
                  Resolution: 1 units/m
                  Mode: relative
                Class originated from: 12. Type: XIValuatorClass
                Detail for Valuator 3:
                  Label: Rel Vert Wheel
                  Range: -1.000000 - -1.000000
                  Resolution: 1 units/m
                  Mode: relative
                Class originated from: 12. Type: XIScrollClass
                Scroll info for Valuator 2
                  type: 2 (horizontal)
                  increment: 1.000000
                  flags: 0x0
                Class originated from: 12. Type: XIScrollClass
                Scroll info for Valuator 3
                  type: 1 (vertical)
                  increment: -1.000000
                  flags: 0x2 ( preferred )

Reconfigurer les fonctions des boutons consiste maintenant à changer la carte des boutons. Nous allons obtenir la carte de boutons existante comme suit:

$ xinput get-button-map 12 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24    

Ceci est la carte des boutons actuelle. Pensez à cela comme à un tableau de boutons et chacune des valeurs est la "fonction" du bouton à cet index. Malheureusement, je ne me souviens plus très bien comment j'en suis arrivé à cette conclusion, mais je souhaite modifier les fonctions des boutons 8, 9 et 10 pour que la souris se comporte comme le bouton 2. Je le fais en modifiant les numéros de fonction de ces boutons. boutons et en le rétablissant comme carte des boutons pour le périphérique X comme suit:

$ xinput set-button-map 12 1 2 3 4 5 6 7 2 2 2 11 12 13 14 15 16 17 18 19 20 21 22 23 24

Pour en faire une solution permanente, j'ajoute la commande ci-dessus à mon fichier .profile à exécuter lorsque je me connecte. Cependant, l'ID de périphérique peut changer d'un démarrage à l'autre en fonction des périphériques connectés à l'ordinateur. Pour éviter cela, grep et awk peuvent être utilisés pour trouver l'ID de périphérique et l'envoyer à la commande xinput comme suit:

MOUSE_ID=`xinput list | grep -i Logitech | awk -F= '{ print $2}' | awk '{print $1}'` `xinput set-button-map $MOUSE_ID 1 2 3 4 5 6 7 2 2 2 11 12 13 14 15 16 17 18 19 20 21 22 23`

Les lignes ci-dessus sont ajoutées au fichier .profile et le périphérique sera situé de manière dynamique dans la liste xinput et remappera les fonctions des boutons comme nous le souhaitons. Notez cependant que Logitech, dans l'exemple ci-dessus, est vague (je n'ai qu'un périphérique Logitech). Par conséquent, à partir du résultat de la commande xinput, vous devrez peut-être indiquer quelque chose de plus spécifique pour grep.

0
GuestGM