{"id":2906,"date":"2017-11-14T17:00:08","date_gmt":"2017-11-14T16:00:08","guid":{"rendered":"http:\/\/www.unicoda.com\/?p=2906"},"modified":"2017-11-06T22:47:29","modified_gmt":"2017-11-06T21:47:29","slug":"i3-gestion-du-volume-au-clavier","status":"publish","type":"post","link":"https:\/\/www.unicoda.com\/?p=2906","title":{"rendered":"[i3] Gestion du volume au clavier"},"content":{"rendered":"<p>Mon clavier actuel dispose d&rsquo;une molette permettant de r\u00e9gler le volume. Apr\u00e8s plusieurs essais infructueux visant \u00e0 faire varier le volume via la molette dans i3, j&rsquo;ai repris derni\u00e8rement le probl\u00e8me du d\u00e9but, pour enfin arriver \u00e0 une configuration fonctionnelle.<\/p>\n<p>Je me suis donc replong\u00e9 dans la documentation d&rsquo;i3 qui indique d&rsquo;utiliser xev pour capturer les informations sur les touches que l&rsquo;on souhaite configurer. Installation donc avec pacman sous Arch Linux : <code>pacman -S xorg-xev<\/code>. Il est ensuite possible de d\u00e9marrer le programme via la commande <code>xev<\/code>. Si je fais bouger la molette vers le bas, j&rsquo;obtiens les \u00e9v\u00e9nements suivants dans xev:<\/p>\n<pre>MappingNotify event, serial 33, synthetic NO, window 0x0,\r\n\u00a0\u00a0\u00a0 request MappingKeyboard, first_keycode 8, count 248\r\n\r\nKeyPress event, serial 33, synthetic NO, window 0x2a00001,\r\n\u00a0\u00a0\u00a0 root 0x2a4, subw 0x0, time 14668027, (482,-109), root:(486,1198),\r\n\u00a0\u00a0\u00a0 state 0x10, keycode 122 (keysym 0x1008ff11, XF86AudioLowerVolume), same_screen YES,\r\n\u00a0\u00a0\u00a0 XLookupString gives 0 bytes: \r\n\u00a0\u00a0\u00a0 XmbLookupString gives 0 bytes: \r\n\u00a0\u00a0\u00a0 XFilterEvent returns: False\r\n\r\nKeyRelease event, serial 34, synthetic NO, window 0x2a00001,\r\n\u00a0\u00a0\u00a0 root 0x2a4, subw 0x0, time 14668030, (482,-109), root:(486,1198),\r\n\u00a0\u00a0\u00a0 state 0x10, keycode 122 (keysym 0x1008ff11, XF86AudioLowerVolume), same_screen YES,\r\n\u00a0\u00a0\u00a0 XLookupString gives 0 bytes: \r\n\u00a0\u00a0\u00a0 XFilterEvent returns: False<\/pre>\n<p>Tout ceci n&rsquo;est pas tr\u00e8s lisible ici, mais nous pouvons tout de m\u00eame isoler les informations int\u00e9ressantes en particulier <em>keycode 122<\/em> et <em>XF86AudioLowerVolume<\/em>. Pour ma part, je choisis d&rsquo;utiliser le keysysm <em>XF86AudioLowerVolume<\/em>, et utiliserai donc <em>bindsym<\/em>, pour utiliser le keycode, on utilisera <em>bindcode<\/em> (non test\u00e9). En r\u00e9sum\u00e9, pour diminuer le volume <em>XF86AudioLowerVolume<\/em>, pour l&rsquo;augmenter<em> XF86AudioRaiseVolume<\/em> et pour couper le son<em> XF86AudioMute<\/em>.<\/p>\n<p>Il faut maintenant s&rsquo;int\u00e9resser \u00e0 la commande \u00e0 effectuer dans les diff\u00e9rents cas. Pour le contr\u00f4le du volume, je d\u00e9cide de passer par <code>pactl<\/code>, abr\u00e9viation de <em>PulseAudio Control<\/em>. La commande est de la forme :<\/p>\n<pre>pactl set-sink-volume SINK VOLUME<\/pre>\n<p>Le param\u00e8tre SINK correspond \u00e0 la sortie sonore que l&rsquo;on souhaite contr\u00f4ler. Pour \u00eatre en mesure de d\u00e9terminer son num\u00e9ro, j&rsquo;utilise la commande <code>pactl list<\/code>. Parmi les informations renvoy\u00e9es, il faut chercher les lignes suivantes <em>Carte #0<\/em>, <em>Carte #1<\/em>, &#8230; Dans mon cas, la carte 0 indique \u00ab\u00a0HDMI Audio Controller\u00a0\u00bb, il s&rsquo;agit donc de la sortie sonore du port HDMI de mon ordinateur. Pour la carte 1, c&rsquo;est d\u00e9j\u00e0 mieux puisqu&rsquo;il est affich\u00e9 \u00ab\u00a0Audio interne\u00a0\u00bb. Pour des informations plus concises, on utilise <code>pactl list sinks short<\/code> et on s\u00e9lectionne la carte portant la mention <em>RUNNING<\/em>.<\/p>\n<p>Petit test rapide, casque sur les oreilles, fond musical, j&rsquo;ex\u00e9cute la commande suivante dans mon terminal : <code>pactl set-sink-volume 1 -5%<\/code>. Bingo ! Le volume diminue. J&rsquo;en profite tout de suite pour tester la commande permettant de couper le son : <code>pactl set-sink-mute 1 toggle<\/code>. Cela fonctionne. J&rsquo;ouvre donc le fichier de configuration d&rsquo;i3 pour y ajouter les lignes suivantes :<\/p>\n<pre>bindsym XF86AudioLowerVolume exec pactl set-sink-volume 1 -5%\r\nbindsym XF86AudioRaiseVolume exec pactl set-sink-volume 1 +5%\r\nbindsym XF86AudioMute exec pactl set-sink-mute 1 toggle<\/pre>\n<p><em>Rechargement de la configuration.<\/em><\/p>\n<p>Trois lignes de configuration qui me permettent d\u00e9sormais de contr\u00f4ler le volume directement au niveau de mon clavier, sans avoir \u00e0 le modifier dans l&rsquo;application diffusant le flux audio. Pour simplifier la mise en place d&rsquo;une telle configuration, on essayera de toujours proc\u00e9der en trois \u00e9tapes. En premier lieu, validation de la commande que l&rsquo;on souhaite appeler, puis test de la prise en compte de la touche sur une commande fonctionnelle connue, et enfin r\u00e9union des \u00e9tapes pr\u00e9c\u00e9dentes pour configuration finale. L&rsquo;essentiel \u00e9tant surtout de ne pas se h\u00e2ter (<i>\u00ab\u00a0Ne soyez pas si h\u00e2tif, ma\u00eetre Meriadoc\u00a0!\u00a0\u00bb<\/i>) pour \u00e9viter de se retrouver, apr\u00e8s configuration, sans effet visible ou audible et, de ne pas pouvoir alors, isoler imm\u00e9diatement la source du probl\u00e8me.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Mon clavier actuel dispose d&rsquo;une molette permettant de r\u00e9gler le volume. Apr\u00e8s plusieurs essais infructueux visant \u00e0 faire varier le volume via la molette dans i3, j&rsquo;ai repris derni\u00e8rement le probl\u00e8me du d\u00e9but, pour enfin arriver \u00e0 une configuration fonctionnelle. Je me suis donc replong\u00e9 dans la documentation d&rsquo;i3 qui indique d&rsquo;utiliser xev pour capturer &hellip; <a href=\"https:\/\/www.unicoda.com\/?p=2906\" class=\"more-link\">Continuer la lecture<span class=\"screen-reader-text\"> de &laquo;&nbsp;[i3] Gestion du volume au clavier&nbsp;&raquo;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[316],"tags":[344,345,346],"class_list":["post-2906","post","type-post","status-publish","format-standard","hentry","category-configuration","tag-i3","tag-pactl","tag-volume"],"_links":{"self":[{"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/posts\/2906","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2906"}],"version-history":[{"count":7,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/posts\/2906\/revisions"}],"predecessor-version":[{"id":2926,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/posts\/2906\/revisions\/2926"}],"wp:attachment":[{"href":"https:\/\/www.unicoda.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2906"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2906"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2906"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}