Ceci est une ancienne révision du document !



XBindKeys

XBindKeys permet d'assigner des commandes shell à des raccourcis clavier (touches et combinaisons de touches) ou à des boutons de souris (les combinaisons clavier/souris étant possibles).

XBindKeys est particulièrement utile pour configurer certaines touches multimédia mal reconnues, une télécommande mal supportée, les boutons d'un modèle de souris exotique… ou pour toute personnalisation poussée.

Interface graphique

Installez le paquet xbindkeys-config.

xbindkeys-config est une interface graphique pour XBindKeys. Pour ajouter une nouvelle règle, il vous suffit d'y créer un nouveau raccourci, de cliquer sur la touche correspondante, de définir la commande et d'enregistrer cette nouvelle règle.

XBindKeys permet d'édicter des règles qui font le lien entre une touche (ou une combinaison de touches) et une action (une commande shell). Ces règles sont définies dans le fichier ~/.xbindkeysrc (c'est-à-dire /home/VOUS/.xbindkeysrc). Si on voulait que la combinaison de touche [Alt] + [B] déclenche le lancement de Brasero, on pourrait écrire dans ''~/.xbindkeys'' :

# Lancer Brasero avec Ctrl+B
"brasero"
     control + b

Certaines règles sont plus compliquées à décrire car les touches ne portent pas toutes des noms évidents. Pour désigner les touches en général, on peut utiliser des keycodes, dont les valeurs s'obtiennent en utilisant la commande xev. L'appui sur une touche ou un bouton affiche un ensemble d'information, dont le keycode, ou le numéro du bouton pour une souris, ainsi que l'état (une information du serveur graphique X relative aux combinaisons de touches). Voici un exemple de ce que xev affiche lors de l'appui et du relâchement de la touche « b » sur un clavier bépo :

KeyPress event, serial 31, synthetic NO, window 0x2600001,
    root 0x4d, subw 0x2600002, time 55087997, (40,40), root:(44,105),
    state 0x0, keycode 24 (keysym 0x62, b), same_screen YES,
    XLookupString gives 1 bytes: (62) "b"
    XmbLookupString gives 1 bytes: (62) "b"
    XFilterEvent returns: False

KeyRelease event, serial 31, synthetic NO, window 0x2600001,
    root 0x4d, subw 0x2600002, time 55088123, (40,40), root:(44,105),
    state 0x0, keycode 24 (keysym 0x62, b), same_screen YES,
    XLookupString gives 1 bytes: (62) "b"
    XFilterEvent returns: False

L'état (state : 0x0) et le keycode (24) sont les deux informations importantes pour XBindKeys. Parfois, vous utiliserez le keysim (b pour la touche « b », Home pour la touche « Début », etc.) Notez que state correspond au code d'une touche muette ou modificateur (typiquement, [Control] et [Alt]) : lorsqu'aucun modificateur n'a été pressé, il prend la valeur m:0x0 qui signale l'absence de modificateur et peut donc être omis dans les règles que vous définirez.

Pour les souris : xev est très bavard et affiche notamment toutes les informations de déplacement de la souris, ce qui peut être gênant lorsque que l'on cherche à afficher les informations sur les boutons en cliquant dans la petite fenêtre Event Tester. Il est plus simple de filtrer la sortie avec xev | grep button.

De nombreux exemples utilisant les informations données par xev sont donnés à la section « configuration » du site de XBindKeys.

Pour tester vos règles, lancez XBindKeys avec la commande xbindkeys -v : l'option -v force l'affichage d'informations sur le déroulement des actions XBindKeys. Si vous avez défini la règle proposée plus haut relative à Brasero (ou à tout autre programme de votre choix) et que vous déclenchez la combinaison de touche appropriée, vous devriez lire quelque chose comme :

$ xbindkeys -v
displayName = :0.0
rc file = /home/VOUS/.xbindkeysrc
rc guile file = /home/VOUS/.xbindkeysrc.scm
getting rc guile file /home/VOUS/.xbindkeysrc.scm.
WARNING : /home/VOUS/.xbindkeysrc.scm not found or reading not allowed.
1 key in /home/VOUS/.xbindkeysrc

min_keycode=8     max_keycode=255 (ie: know keycodes)
"brasero"
    Control + b
starting loop...
Key press !
e.xkey.keycode=24
e.xkey.state=4
"brasero"
    Control + b
Start program with fork+exec call
Key release !
e.xkey.keycode=24
e.xkey.state=4
Catch CHLD signal -> pid 11725 terminated

Pour quitter ce mode interactif, faites [Ctrl] + [C]. Si tout va bien, vous pouvez lancer xbindkeys en tâche de fond.

Pour que les règles que vous aurez définies soient effectives à chaque démarrage de votre ordinateur sans que vous n'ayez à vous en soucier, il suffit de lancer automatiquement xbindkeys au démarrage de l'interface graphique :

  • sous Gnome, ajoutez xbindkeys dans Système/Préférences/Sessions
  • sous KDE, créez un lanceur dans ~/.kde/Autostart
FIXME À faire : exemple de règles pour les claviers
# Quelques règles utiles pour les souris

# Rappel : écrire
#   m:0x0 + b:n
# ou
#   b:n
# est équivalent (absence de modificateur).

# Raccourci Alt+gauche associé avec le bouton 9
# (dans Firefox, permet de revenir à la page précédente)
"/usr/bin/xvkbd -xsendevent -text "\[Alt_L]\[Left]""
   b:9

# Lance un terminal lorsque le bouton 2 est enclenché
"/usr/local/bin/terminal"
   b:2
# Note : on pourrait utiliser une action du type :
# "echo ButtonPress 2 ButtonRelease 2 | xmacroplay -d 0 :0.0"
# avec le programme xmacro (voir ci-après)

# Émule le collé par l'habituel clic-milieu avec le bouton 8
# (colle la sélection courante/la dernière sélection)
# Nécessite le programme xsel (voir ci-après)
"echo "string $(xsel -o)" | xmacroplay -d 0 :0.0"
   b:8

Xev

Si vous vous en tenez au combinaisons usuelles ([Ctrl], [Alt], touches alphabétiques…), Xev ne vous est pas indispensable. Dans tous les autres cas, vous aurez certainement besoin de xev pour récupérer les informations utiles.

XSel

X, le serveur graphique le plus courant sous Ubuntu et GNU/Linux, gère plusieurs presse-papiers. On distingue essentiellement :

  • le clipboard, qui correspond au texte mémorisé (resp. restitué) par l'action usuelle « copier » (resp. « coller ») ;
  • PRIMARY, le texte sélectionné à la souris, qui peut par la suite être collé par un clic milieu (en général, en enfonçant la molette des souris qui en possède une) et ce que le texte source soit encore sélectionné ou non. Cette fonctionnalité semble très prisée des utilisateurs.

XSel est un programme qui permet de manipuler PRIMARY et donc de forcer sa valeur ou de récupérer la sélection courante. Il devient dès lors possible d'émuler le clic milieu en terme de copie-coller (ie. cela ne permet pas d'émuler d'autres actions associées au clic milieu, telle que l'ouverture d'un lien dans un nouvel onglet dans Firefox : Xev ne s'occupe que de PRIMARY).

Un exemple d'utilisation de xsel est donné plus haut.

xclip

xclip offre les mêmes fonctionnalité que XSel. Utiliser l'un ou l'autre à votre convenance.

Site officiel de xclip Page man

Xmacro

Xmacro est un programme de gestion des évènements claviers et souris qui permet de monter de véritables « scénarios » d'actions. xmacrorec écoute et enregistre une suite d'actions, xmacroplay rejoue un ensembles d'évènements. Dans le cas d'une utilisation avec XBindKeys, on utilisera essentiellement les talents d'acteur de Xmacro, qui propose un jeu très complet d'actions clavier et souris pour simuler des évènements (du type « telle touche vient d'être enfoncée », « tel bouton vient d'être relâché »).

xdotool

À l'instar de Xmacro, xdotool permet de simuler des évènements claviers et souris, mais également d'envoyer des ordres divers aux objets X (fenêtre, panels, etc.) Les actions sont basées sur la librairie standard du serveur X.

Site officiel de xdotool

xreplay

Un autre programme pour envoyer des signaux X relatifs à la souris et au clavier.

Site officiel de Xreplay

  • xbindkeys.1211013480.txt.gz
  • Dernière modification: Le 01/06/2008, 18:31
  • (modification externe)