Xbindkeys (Français)

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.
État de la traduction: Cet article est la version francophone de Xbindkeys. Date de la dernière traduction: 2022-02-27. Vous pouvez aider à synchroniser la traduction s'il y a eu des changements dans la version anglaise.

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 , 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.

Contrôle audio

Voici un exemple de fichier de configuration qui lie les combinaisons de touches 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.

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 et . 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 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 .

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 et . Malheureusement, comme vous tenez déjà une touche modificatrice (Super ou Shift, par exemple), X consultera le résultat sous la forme , ce qui n'apportera rien d'utile. Voici un script basé sur xmacro et xmodmap du paquet pour faire cela . Cela fonctionne pour appeler une fois (en supposant que vous utilisez Super+minus), mais l'appeler de manière répétée sans relâcher la touche (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 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 , , , , ).

«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» :

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 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.
gollark: Semirelatedly, it turns out that I already parallelized osmarkspythonbuildsystem™ and forgot. How excellent.
gollark: In that output? No.
gollark: Evidently, anomalous space injection.
gollark: ```osmarks@fenrir /t/home> make -E 'print-%:; @echo $($*)' print-out print-objdalesrc/main.o src/err.o src/alloc.o src/string.o src/variable.o src/host/posix .o```
gollark: dale doesn't seem to have much output, so it's hard to tell what it's doing.
This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.