Comment lier les boutons de la souris aux touches?

19

J'ai une souris laser Logitech MX400 qui a 5 boutons + 4 pour le défilement vertical / horizontal. Je voudrais qu'il soit configuré de sorte qu'au lieu de faire défiler horizontalement, appuyer sur la droite de la molette de défilement enverra Ctrl+ Tabet gauche enverra Ctrl+ Shift+ Tab, ce qui me permettra de parcourir les onglets dans les navigateurs.

De plus, ce serait bien si je pouvais remapper le bouton du milieu à l'un de ceux sur le côté car il est vraiment difficile d'appuyer.

Un autre bonus serait si je pouvais écrire un script qui me permet de définir quels boutons font quoi en fonction de la fenêtre actuellement active.

J'ai essayé d'utiliser xmodmapmais je ne pouvais que voir comment réorganiser les boutons, pas les envoyer des signaux clés.

Merci d'avance.


Carte des boutons (en utilisant xev):

Left        1
Middle      2
Right       3
ScrollUp    4
ScrollDown  5
ScrollLeft  6
ScrollRight 7
Backward    8
Forward     9
Callum Rogers
la source

Réponses:

18

Les xbindkeys et xte peuvent vous aider.

Par exemple, mon fichier .xbindkeysrc ressemble à ceci:

# close the window under the mouse cursor
"xte 'mouseclick 1' && xte 'keydown Alt_L' 'key F4' 'keyup Alt_L'"
  b:8+Release

# double click
"xte 'mouseclick 1' 'mouseclick 1'"
  b:9
lukasz
la source
C'est fantastique et extensible, merci beaucoup
Callum Rogers
1
Pour obtenir xte sur Ubuntu 16.x, vous devrez installer xautomation à partir d' apt .
1111161171159459134
Cela ne fonctionne pas aussi bien que j'aime, car cela ne fonctionne pas de la même manière si je maintiens le bouton enfoncé. Ma vieille souris avait un bouton qui permet à la molette de défilement de tourner librement, ce qui est génial si je veux simplement la faire bouger très rapidement et faire défiler longtemps. Mais mon nouveau n'a pas cela, donc j'ai lié deux boutons sur le côté (je pense qu'ils sont conçus comme boutons arrière / avant pour la navigation Web) aux touches PgUp / PgDn. Mais je dois les appuyer à plusieurs reprises si je veux continuer à faire défiler; Je ne peux pas simplement les maintenir. Comment puis-je lui faire tenir la clé tant que je maintiens le bouton?
flarn2006
5

Merci à tous pour la solution. Voici un guide plus infaillible / combiné (fait sur Xubuntu 18.04).

  1. Ouvrez un terminal (comme xterm / terminal / terminator), devenez root ( sudo su -) ou utilisez sudo devant la commande:

    apt install xbindkeys xautomation
  2. Vérifiez le mappage des boutons avec xev, pour cela vous n'avez pas besoin de l'autorisation root, donc quittez la session root (avec exit) ou ouvrez un autre terminal en tant qu'utilisateur.

    xev | grep button
  3. Une petite fenêtre apparaîtra. Vous devez déplacer la souris dans cette fenêtre et appuyer sur le bouton que vous souhaitez remapper. Un exemple de sortie dans le terminal sera:

    state 0x0, button 8, same_screen YES

    Il s'agit du 2ème bouton latéral de ma souris que je souhaite utiliser comme PAGE_DOWN.

    state 0x0, button 9, same_screen YES

    C'est le 1er bouton latéral (oui, l'ordre est inversé) que je veux utiliser comme PAGE_UP.

  4. Lorsque vous avez tous les boutons que vous souhaitez remapper, vous pouvez fermer la petite fenêtre xev. Ouvrez votre éditeur préféré (gedit / vi / nano par exemple) et éditez le fichier de configuration.

    vi .xbindkeysrc
  5. Si vous avez déjà du contenu dans le fichier, vérifiez s'il existe déjà une liaison comme celle-ci (peu probable, pas par défaut) et ajoutez à la fin.

    #Pagedown press
    "xte 'keydown Next'"
    b:8
    
    #Pagedown release
    "xte 'keyup Next'"
    b:8 + Release
    
    #Pagedup press
    "xte 'keydown Prior'"
    b:9
    
    #Pageup release
    "xte 'keyup Prior'"
    b:9 + Release

    Remarque: vous avez besoin de deux entrées, une pour la pression sur le bouton et une pour la libération.

  6. Les boutons 8 + 9 seront affectés aux touches "Suivant" (qui est PAGE_DOWN) et "Prior" (PAGE_UP). Si vous souhaitez mapper différentes clés, vous pouvez trouver le symbole de clé avec xev.

    xev | grep keysym
  7. Comme précédemment, démarrez-le dans un terminal, déplacez la souris vers la petite fenêtre et appuyez sur la touche souhaitée.

    state 0x0, keycode 117 (keysym 0xff56, Next), same_screen YES,
  8. Enregistrez et tuez les xbindings.

    killall xbindkeys ; xbindkeys

Vous pouvez maintenant utiliser les boutons latéraux supplémentaires de la souris. Le paramètre sera chargé automatiquement au prochain redémarrage / connexion. Vous n'avez besoin de la killall [...]commande ci-dessus que si vous modifiez les paramètres.

malasa
la source