{{tag>Xenial clavier souris télécommande personnalisation}} ---- ====== XBindKeys ====== **XBindKeys** permet d'assigner des //[[:commande_shell|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. ===== Pré-requis ===== * Disposer des [[:sudo|droits d'administration]]. * Disposer d'une connexion à Internet configurée et activée. ===== Installation ===== [[:tutoriel:comment_installer_un_paquet|Installez le paquet]] **[[apt>xbindkeys]]** et si vous souhaitez une interface graphique **[[apt>xbindkeys-config]]**. {{applications:xbindkeys_xenial.png?500|}} **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. ===== Utilisation ===== Pour lancer l'interface graphique entrez la commande suivante dans un [[:terminal]] : xbindkeys-config XBindKeys permet d'éditer 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'' de votre **Dossier Personnel**. Si on voulait que la combinaison de touche ''[Ctrl] + [B]'' déclenche le lancement de [[:brasero|Brasero]], on pourrait [[:tutoriel:comment_editer_un_fichier|écrire dans ''~/.xbindkeysrc'']] : # Lancer Brasero avec Ctrl+B "brasero" control + b Pour que les nouvelles règles soient effectives, il faut soit : - Fermer la session puis la relancer - Ou redémarrer xbindkeys ''killall -HUP xbindkeys'' 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. "NoCommand" m:0x14 + c:65 Control+Mod2 + 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. ==== Exemple de règles ==== Quelques règles utiles pour les souris : # # Rappel : écrire # m:0x0 + b:n # ou # b:n # est équivalent (absence de modificateur). #BOUTON 6 #POSITION : Le bouton latéral le plus éloigné de la paume de la main #ACTION : TAB "/usr/bin/xvkbd -xsendevent -text "\[Tab]"" b:6 #BOUTON 7 #POSITION : Le bouton latéral le plus éloigné de la paume de la main #ACTION : k "/usr/bin/xvkbd -xsendevent -text "\[k]"" b:7 # 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]\[ Ce fichier est à titre d'exemple, il sert dans les jeux pour afficher les scores (TAB), parler sous TeamSpeak (k), et F5 pour parler dans Counter Strike ([[:PlayOnLinux]]) ou actualiser des pages internet ou autre. ==== Passer d'un bureau à l'autre avec les boutons latéraux de la souris ==== Voici une autre méthode pour affecter des raccourcis clavier aux boutons de la souris, dans ce cas précis: passer d'un bureau à l'autre avec les boutons latéraux du pouce. Nous utiliserons //xdotool// plutôt que //xvkbd// car il est simple à utiliser, envoie des événements XTest fiables, gère proprement les modificateurs (--clearmodifiers) et s'intègre sans échappements complexes dans des scripts/configs comme xbindkeys. === Prérequis === - Ubuntu (session X11). - Paquets : xbindkeys et xdotool. Installation : sudo apt update sudo apt install xbindkeys xdotool === Vérifier les numéros de bouton === Ouvrir un terminal et lancer : xev -event mouse Cliquer sur les boutons latéraux ; noter les valeurs `button` (ex. `button 8` et `button 9`). //Rôle : confirme quels numéros de bouton envoyer dans la config xbindkeys.// === Créer / éditer le fichier ~/.xbindkeysrc === Ajouter les lignes suivantes dans `~/.xbindkeysrc` (copier/coller) : # Bouton latéral 8 -> Super+PageUp "xdotool key --clearmodifiers Super+Page_Up" b:8 # Bouton latéral 9 -> Super+PageDown "xdotool key --clearmodifiers Super+Page_Down" b:9 Explication : - `"xdotool key --clearmodifiers Super+Page_Up"` : commande exécutée quand le bouton est pressé. - xdotool : outil qui simule des événements clavier/souris. - key : envoie une ou plusieurs touches. - --clearmodifiers : supprime temporairement les modificateurs actifs (Shift/Ctrl/Alt/Super maintenus) pour s'assurer que la combinaison envoyée n'est pas altérée. - `Super+Page_Up` / `Super+Page_Down` : noms des touches (Super = touche Windows). - `b:8` / `b:9` : association au numéro de bouton rapporté par xev. === Lancer ou relancer xbindkeys === Démarrer xbindkeys : killall xbindkeys 2>/dev/null || true xbindkeys //Rôle : charge la configuration et écoute les événements de la souris pour exécuter les commandes définies.// === Autostart au démarrage de la session === Ajouter xbindkeys aux applications de démarrage (Startup Applications) : - Nom : xbindkeys - Commande : /usr/bin/xbindkeys //Rôle : activer automatiquement le mapping à chaque connexion.// === Vérifications et dépannage rapide === - Tester manuellement la commande : xdotool key --clearmodifiers Super+Page_Up - Vérifier que xbindkeys tourne : `pgrep xbindkeys` - Confirmer les boutons avec `xev` si le mapping ne répond pas. - Si vous êtes sous Wayland, cette méthode peut ne pas fonctionner ; passez sur une session Xorg si nécessaire. ===== 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. Reportez-vous à cette [[:tutoriel:application_demarrage|page]], dans le //Commmande// mettez ''xbindkeys''. =====Voir aussi===== * [[http://www.nongnu.org/xbindkeys/xbindkeys.fr.html|Sur nongnu.org]] * [[https://savannah.nongnu.org/projects/xbindkeys/|Le site officiel]] * (en) [[https://askubuntu.com/questions/254424/how-can-i-change-what-keys-on-my-keyboard-do-how-can-i-create-custom-keyboard#254425|d'autres infos sur Ask-Ubuntu]] ---- Contributeurs : [[utilisateurs:l_africain|L'Africain]]