Xbindkeys (Français)

É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.
Related articles
xmodmap (Français)
Sxhkd
Xorg#Automation
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-gtk2
AUR
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
La première ligne représente une commande.
La deuxième ligne contient l'état (0x8) et le code de touche (32) tels que rapportés par l'outil
xev
.
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
xmacro
AUR
. 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.