¿Cómo puedo hacer que las teclas multimedia funcionen con i3?

8

Me mudé de Gnome a i3 en Manjaro, y casi termino con la configuración del administrador de ventanas y los colores del terminal y demás. Después de un tiempo decidí escuchar algo de música, y después de un par de minutos me di cuenta de que las teclas de volumen y las teclas de reproducción no funcionan.

Tengo un teclado Razer Blackwidow Stealth 2014, por lo que esas teclas multimedia están realmente juntas con las teclas de función. Por ejemplo: Reproducir / Pausa está activado F6, y actúa como una tecla multimedia cuando presiono la Fntecla, como en Fn + F6.

Renato Oliveira
fuente
Traté de aclarar esta pregunta porque, francamente, alrededor del 90% estaba mal . Ahora está bien, y tu respuesta lo aclara. Dos de las cosas que tenía su respuesta anterior / siguiente estaban exactamente en su respuesta. La única mejora real fue mover el juego a jugar / pausar (lo que no importa si funciona o no). Por otra parte, el xevcomando era totalmente litera. Si esa fue la salida de xev cuando presionó esas teclas, su respuesta funcionaría. Pruébalo otra vez. Su estado debería decir algo XF86AudioNexty cosas por el estilo.
Evan Carroll

Respuestas:

9

La búsqueda de la respuesta

Después de algún tiempo jugando con los controles, encontré una publicación en el viejo panel de preguntas frecuentes de i3: https://faq.i3wm.org/question/3747/enabling-multimedia-keys.1.html

Dice pegar lo siguiente en el archivo .config de i3 (a continuación se muestra una versión ligeramente modificada, con algunas líneas eliminadas, que no son relevantes para esta pregunta en particular):

# 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

Y tampoco funcionó, sin embargo, el proceso de encontrar la respuesta es correcto.

La verdadera respuesta

Para mí, al menos, el problema era que después de copiar esas líneas, las teclas no funcionarían. Después de un poco más de investigación, descubrí que los comandos de volumen podrían ser un poco diferentes, utilizando en amixerlugar de PulseAudio pactl.

Al final, quedaron así:

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

y comenzaron a trabajar

Las teclas de reproducción fueron un poco más complicadas. Deducí que .config indica qué comando se ejecuta para realizar la acción. Luego procedí a probar playerctl play-pausemi terminal. Por supuesto que no funcionó, porque playerctl no estaba instalado . Después de instalarlo (usando sudo pacman -S playerctl) esos comandos de teclado también funcionaron bien.

Renato Oliveira
fuente
Para el control de volumen, la primera forma funcionó para mí cambiando los sumideros a 1 en lugar de 0. Puede ver sus sumideros haciendo la lista de pactl | grep sink
Ramzi C.
2

Descubrí que necesitaba un --separador pactldel set-sink-...y que era más consistente de usar @DEFAULT_SINK@si usa auriculares.

# 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
fuente
+1 para @ DEFAULT_SINK @. Para mí, los dos guiones no fueron necesarios, incluso evitan que esto funcione (mxLinux aquí).
Simon
1

acabo de reemplazar 0 con un ejemplo:

Controles de audio de pulso

bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume 1 + 5% #increase volumen de sonido bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume 1 -5% #decrease volumen de sonido bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute 1 alternar # sonido mudo

para ver qué número es para su dispositivo de audio, abra pavucontrol y haga clic en dispositivos de salida, el superior es 0 debajo de ese es uno, etc.

ayuda amigo
fuente