Comment faire fonctionner les clés multimédias avec i3?

8

Je suis passé de Gnome à i3 sur Manjaro, et j'ai presque fini de configurer le gestionnaire de fenêtres, les couleurs des terminaux et ainsi de suite. Après un certain temps, j'ai décidé d'écouter de la musique et après quelques minutes, j'ai réalisé que les touches de volume et les touches de lecture ne fonctionnaient pas.

J'ai un clavier Razer Blackwidow Stealth 2014, donc ces touches multimédias sont en fait avec les touches de fonction. Par exemple: Play / Pause est activé F6, et il agit comme une clé multimédia lorsque j'appuie sur la Fntouche, comme dans Fn + F6.

Renato Oliveira
la source
J'ai essayé de nettoyer cette question parce que franchement, environ 90% de la question était tout simplement erronée . Maintenant, ça va, et votre réponse clarifie les choses. Deux des choses que vous avez eues dans votre réponse précédente / suivante se trouvaient exactement dans votre réponse. La seule véritable amélioration a été de déplacer la lecture vers la lecture / pause (ce qui ne fait aucune différence quant à savoir si cela fonctionne ou non). De plus, la xevcommande était totalement superposée. Si c'était la sortie de xev lorsque vous appuyez sur ces touches, votre réponse fonctionnerait. Essaye encore. Votre état devrait dire quelque chose XF86AudioNext, etc.
Evan Carroll

Réponses:

9

La recherche de la réponse

Après un certain temps à jouer avec les contrôles, j'ai trouvé un message sur l'ancien tableau de FAQ i3: https://faq.i3wm.org/question/3747/enabling-multimedia-keys.1.html

Il dit de coller ce qui suit dans le fichier .config d'i3 (ci-dessous est une version légèrement modifiée, avec quelques lignes supprimées, qui ne sont pas pertinentes pour cette question particulière):

# Pulse Audio controls
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume 0 +5% #increase sound volume
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume 0 -5% #decrease sound volume
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute 0 toggle # mute sound

# Sreen brightness controls
bindsym XF86MonBrightnessUp exec xbacklight -inc 20 # increase screen brightness
bindsym XF86MonBrightnessDown exec xbacklight -dec 20 # decrease screen brightness

# Media player controls
bindsym XF86AudioPlay exec playerctl play-pause
bindsym XF86AudioPause exec playerctl play-pause
bindsym XF86AudioNext exec playerctl next
bindsym XF86AudioPrev exec playerctl previous

Et cela n'a pas fonctionné non plus, mais le processus de recherche de la réponse est correct.

La vraie réponse

Pour moi, au moins, le problème était qu'après avoir copié ces lignes, les clés ne fonctionneraient pas. Après quelques recherches supplémentaires, j'ai découvert que les commandes de volume pouvaient être un peu différentes, en utilisant à la amixerplace de PulseAudio pactl.

À la fin, ceux-ci ont été laissés comme ceci:

# Media volume controls
bindsym XF86AudioMute exec amixer sset 'Master' toggle
bindsym XF86AudioLowerVolume exec amixer sset 'Master' 5%-
bindsym XF86AudioRaiseVolume exec amixer sset 'Master' 5%+

et ils ont commencé à travailler.

Les touches de lecture étaient un peu plus compliquées. J'ai déduit que le .config indique quelle commande est exécutée pour effectuer l'action. J'ai ensuite essayé d'essayer playerctl play-pausemon terminal. Bien sûr, cela n'a pas fonctionné, car playerctl n'était pas installé . Après l'avoir installé (en utilisant sudo pacman -S playerctl) ces commandes clavier ont très bien fonctionné aussi.

Renato Oliveira
la source
Pour le contrôle du volume, la première façon a fonctionné pour moi en changeant les puits à 1 au lieu de 0. Vous pouvez voir vos puits en faisant pactl list | évier grep
Ramzi C.
2

J'ai trouvé que j'avais besoin d'un --pour séparer le pactlde set-sink-...et qu'il était plus cohérent à utiliser @DEFAULT_SINK@si vous utilisez un casque.

# Pulse Audio controls
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl -- set-sink-volume @DEFAULT_SINK@ +5% #increase sound volume
bindsym XF86AudioLowerVolume exec --no-startup-id pactl -- set-sink-volume @DEFAULT_SINK@ -5% #decrease sound volume
bindsym XF86AudioMute exec --no-startup-id pactl -- set-sink-mute @DEFAULT_SINK@ toggle # mute sound
Luke Murray
la source
+1 pour @ DEFAULT_SINK @. Pour moi, les deux tirets n'étaient pas nécessaires, ils empêchent même que cela fonctionne (mxLinux ici).
Simon
1

je viens de remplacer 0 par un exemple:

Commandes Pulse Audio

bindsym XF86AudioRaiseVolume exec - no-startup-id pactl set-sink-volume 1 + 5% #augmentation du volume sonore bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume 1 -5% #diminution du volume sonore bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute 1 bascule # son muet

pour voir quel est le numéro de votre périphérique audio, ouvrez pavucontrol et cliquez sur les périphériques de sortie, celui du haut est 0 sous celui-ci, etc.

aider mec
la source