Xbindkeys (Français)

From ArchWiki
État de la traduction: Cet article est la version francophone de Xbindkeys. Date de la dernière traduction: 2023-09-20. Vous pouvez aider à synchroniser la traduction s'il y a eu des changements dans la version anglaise.

Xbindkeys est un utilitaire capable de faire correspondre n'importe quelle touche ou combinaison de touches à une commande. Cela peut être intéressant par exemple, pour configurer un clavier multimédia ou les touches de fonction d'un ordinateur portable indépendamment du gestionnaire de fenêtres utilisé.

Attention: Xbindkeys ne fonctionne qu'avec Xorg. Si vous utilisez Wayland, c'est directement votre compositeur qui est en charge de la gestion du clavier.

Installation

Installez le paquet xbindkeys.

Configuration

Créez un ~/.xbindkeysrc vierge, ou vous pouvez créer un fichier exemple (Notez que cela inclut certains raccourcis telles que Ctrl+f, que vous voudrez peut-être modifier ou supprimer) :

$ xbindkeys -d > ~/.xbindkeysrc

Maintenant, vous pouvez soit éditer ~/.xbindkeysrc pour définir les raccourcis clavier, soit utiliser la méthode #Avec une GUI.

Astuce: xbindkeys recharge le fichier de configuration s'il a été modifié. Pour obliger un rechargement envoyez un signal HUP au processus : killall -HUP xbindkeys. Quand un signal HUP est envoyé à xbindkeys, les changements prendront effet dès que la souris est bougée (comme indiqué dans xbindkeys(1)).

Contrôle audio

Voici un exemple de fichier de configuration qui lie les combinaisons de touches Fn d'un ordinateur portable aux commandes pactl qui règlent l'audio, comme le volume du son et l'état du muet. Notez que les symboles dièse (#) peuvent être utilisés pour créer des commentaires.

~/.xbindkeysrc
# Augmenter le volume
"pactl set-sink-volume @DEFAULT_SINK@ +1000"
   XF86AudioRaiseVolume

# Diminuer le volume
"pactl set-sink-volume @DEFAULT_SINK@ -1000"
   XF86AudioLowerVolume

# Coupe le volume
"pactl set-sink-mute @DEFAULT_SINK@ toggle"
   XF86AudioMute

# Coupe le micro
"pactl set-source-mute @DEFAULT_SOURCE@ toggle"
   XF86AudioMicMute

Pour des commandes alternatives de contrôle du volume, consultez PulseAudio#Keyboard volume control ou ALSA#Keyboard volume control.

Contrôle du rétroéclairage

Les raccourcis pour le contrôle du rétroéclairage peuvent être définies à l'aide des touches XF86MonBrightnessUp et XF86MonBrightnessDown. Consultez Backlight#Backlight utilities pour connaître les utilitaires de contrôle du rétroéclairage disponibles.

Avec une GUI

Pour une configuration graphique, installez le paquet xbindkeys_config-gtk2AUR et exécutez :

$ xbindkeys_config

Identifier les keycodes

Pour trouver les keycodes d'une touche particulière, entrez la commande suivante :

$ xbindkeys --key

ou la commande suivante pour saisir plusieurs touches :

$ xbindkeys --multikey

Une fenêtre vide s'ouvre. Appuyez sur la ou les touches auxquelles vous souhaitez assigner une commande et xbindkeys produira un extrait pratique qui peut être entré dans ~/.xbindkeysrc. Par exemple, lorsque la fenêtre vide est ouverte, appuyez sur Alt+o pour obtenir la sortie suivante (les résultats peuvent varier) :

"(Scheme function)"
    m:0x8 + c:32
    Alt + o
  1. La première ligne représente une commande.
  2. La deuxième ligne contient l'état (0x8) et le code de touche (32) tels que rapportés par l'outil xev.
  3. La troisième ligne contient les keysyms associés aux keycodes donnés.

Pour utiliser cette sortie, copiez l'une des deux dernières lignes dans ~/.xbindkeysrc et remplacez "(Scheme function)" par la commande que vous souhaitez exécuter.

Pour identifier les boutons de la souris, xev peut être utilisé, consultez [1].

Astuce: Si le mode multi-touches est utilisé, appuyez sur q pour quitter la fenêtre.
Note: xev est fourni par le paquet xorg-xev, consultez xev(1) pour plus d'informations.

Rendre les changements permanents

Une fois que vous avez fini de configurer vos touches, éditez votre fichier xprofile ou xinitrc (en fonction de votre gestionnaire de fenêtres) et placez

xbindkeys

avant la ligne qui démarre votre gestionnaire de fenêtres ou DE.

Simuler les touches multimédia

Les touches XF86Audio* et autres touches multimédia (consultez LQWiki:Symboles du clavier XF86) sont à peu près reconnues par les principaux DE. Pour les claviers ne possédant pas de telles touches, vous pouvez simuler leur effet avec d'autres touches

# Diminuer le volume en appuyant sur Super-moins
"pactl set-sink-volume 0 -1000"
   m:0x50 + c:20
   Mod2+Mod4 + minus

Cependant, pour appeler les touches elles-mêmes, vous pouvez utiliser des outils comme xdotool et xmacroAUR. Malheureusement, comme vous tenez déjà une touche modificatrice (Super ou Shift, par exemple), X consultera le résultat sous la forme Super-XF86AudioLowerVolume, ce qui n'apportera rien d'utile. Voici un script basé sur xmacro et xmodmap du paquet xorg-xmodmap pour faire cela [2].

#!/bin/sh
echo 'KeyStrRelease Super_L KeyStrRelease minus' | xmacroplay :0
xmodmap -e 'remove Mod4 = Super_L'
echo 'KeyStrPress XF86AudioLowerVolume KeyStrRelease XF86AudioLowerVolume' | xmacroplay :0
xmodmap -e 'add Mod4 = Super_L'

Cela fonctionne pour appeler XF86AudioLowerVolume une fois (en supposant que vous utilisez Super+minus), mais l'appeler de manière répétée sans relâcher la touche Super (comme taper sur un bouton de volume) ne fonctionne pas. Si vous souhaitez que cela fonctionne ainsi, ajoutez la ligne suivante au bas du script.

echo 'KeyStrPress Super_L' | xmacroplay :0

Avec ce script modifié, si vous appuyez sur la combinaison de touches assez rapidement, votre touche Super_L restera activée jusqu'à la prochaine fois que vous l'appuierez, ce qui peut entraîner des effets secondaires intéressants. Il suffit d'appuyer à nouveau sur la touche pour supprimer cet état, ou d'utiliser le script original si vous voulez que les choses fonctionnent simplement et que cela ne vous dérange pas de ne pas appuyer plusieurs fois sur le volume haut/bas.

Ces instructions sont valables pour pratiquement toutes les touches multimédia «XF86» (les plus importantes sont XF86AudioRaiseVolume, XF86AudioLowerVolume, XF86AudioPlay, XF86AudioPrev, XF86AudioNext).

«Mouse chording»

En dédiant un bouton de la souris comme une touche "d'accord" (un peu comme la touche Shift sur un clavier), il est possible d'utiliser xbindkeys pour configurer votre souris afin d'effectuer plus d'actions que ce qui serait possible autrement. Cela nécessite l'utilisation de Scheme, plutôt que la syntaxe simplifiée de xbindkeys.

.xbindkeysrc.scm
(define (define-mouse-chords chord-key . definitions)
  (define (start-mouse-chord)
    (let ((cmd #f))
      (for-each
        (lambda (definition)
          (let ((key (list-ref definition 0)) (binding (list-ref definition 1)))
            (xbindkey-function key (lambda () (set! cmd binding)))))
        definitions)
      (xbindkey-function `(release ,chord-key)
        (lambda ()
          (remove-xbindkey `(release ,chord-key))
          (for-each
            (lambda (definition)
              (let ((key (list-ref definition 0)))
                (remove-xbindkey key)))
            definitions)
          (if cmd
            (begin
              (run-command cmd)
              (set! cmd #f))
          )))))
  (xbindkey-function chord-key start-mouse-chord))

Avec cette fonction définie, vous pouvez maintenant configurer quelques commandes «accordées» :

(define-mouse-chords "b:10"
  (list '(release "b:1") "xdotool click 8")
  (list '(release "b:2") "xdotool click 9")
)

Ceci définit le "bouton 10" comme une touche d'accord sur votre souris. Lorsque le bouton 10 est enfoncé, la fonction crée des liens pour les boutons définis dans le bloc. Lorsque le bouton 10 est relâché, ces raccourcis seront supprimées. Ainsi, par exemple, si le bouton 10 est maintenu enfoncé, le fait d'appuyer sur le bouton 1 et de le relâcher, puis de relâcher le bouton 10, entraînera la génération d'un événement virtuel "bouton 8" (retour).

Dépannage

Si, pour une raison quelconque, un raccourci clavier que vous avez déjà défini dans ~/.xbindkeysrc ne fonctionne pas, ouvrez un terminal et tapez ce qui suit :

$ xbindkeys -n

En appuyant sur la touche qui ne fonctionne pas, vous pourrez consulter toute erreur rencontrée par xbindkeys (ex : commande/code touche mal saisi,...).

Si la commande pour un keybind fonctionne via le xdotool en ligne de commande, mais pas lorsqu'elle est activée par le hotkey essayez d'ajouter "+ Release" au raccourci (particulièrement notable sur GNOME) :

"xdotool key --clearmodifiers XF86AudioPlay"
    Mod2 + F7 + Release

Ceci fera en sorte que la touche F7 joue/pause le son. Alors que la commande "xdotool" fonctionne en ligne de commande, si le "+ Release" est supprimé, elle échouera avec xbindkeys.

Note: Sachez que la définition de deux ou plusieurs dispositions de clavier avec par exemple setxkbmap -layout ch,dk résulte en différents états de boutons pour les différentes dispositions et xbindkeys ne sera pas capable de le gérer.