Table des matières

, , , , , , , ,

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.

Installation

Installez le paquet xbindkeys.

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.

Principe et utilisation

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 [Ctrl] + [B] déclenche le lancement de Brasero, on pourrait écrire dans ''~/.xbindkeysrc'' :

# 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 xbindkeys -k. Une fenêtre s'ouvrira et vous pourrez taper la combinaison de touche voulue

$ xbindkeys -k
Press combination of keys or/and click under the window.
You can use one of the two lines after "NoCommand"
in $HOME/.xbindkeysrc to bind a key.
"(Scheme function)"
    m:0x4 + c:65
    Control + space

Vous pouvez utiliser indifféremment le code ou le nom pour définir votre règle.

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.

Lancer XBindKeys automatiquement

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 :

Exemple de règles

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

Programmes tiers utiles

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.

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.

XSel

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

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 ensemble 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 Paquet .deb pour installer

xautomation

Semblable à xdotool, xautomation est un ensemble de programmes permettant un peu plus de possibilités que xdotool. http://linux.die.net/man/7/xautomation

Site officiel de xautomation

xreplay

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

Site officiel de Xreplay

Ces ensembles de programmes exploités ensemble dans un script permettent d'obtenir quelque chose de similaire à SuperMacro (http://adam.denadai.free.fr/index.php un programme sous windows).

Liens


Contributeurs : FIXME.