
Postupoval jsem tak, že jsem spustil aplikaci xev, která vypisuje události XWindow. U mého notebooku byly hodnoty keycode po stiscích jednotlivých tlačítek (viz obrázek vlevo - nahoře jsou ty multimediální klávesy) takovéto:
vypnutí/zapnutí zvuku - 160
ztišení hlasitosti - 174
zvýšení hlasitosti - 176
Tyto hodnoty jsem vložil do souboru ~/.fluxbox/keys:
$ tail -n 3 ~/.fluxbox/keys
174 :ExecCommand amixer set PCM 1%-
176 :ExecCommand amixer set PCM 1%+
160 :ExecCommand script-mute PCM
Samozřejmě je třeba mít nainstalovány alsa-utils, kde se nachází prográmek amixer. Zvláštností je skript script-mute, který jsem původně chtěl napsat sám, ale naštěstí jsem ho našel na netu:174 :ExecCommand amixer set PCM 1%-
176 :ExecCommand amixer set PCM 1%+
160 :ExecCommand script-mute PCM
#!/bin/bash
mixerdev=$1
tmpfilename=~/".tmpmutealsa_$mixerdev"
if [ -r "$tmpfilename" ]; then
leftvalue=`amixer sget "$mixerdev" | tail -2 | cut --delimiter=" " --fields=6 | head -1`
rightvalue=`amixer sget "$mixerdev" | tail -2 | cut --delimiter=" " --fields=6 | tail -1`
if [[ "(0)" != "($leftvalue)" || "(0)" != "($rightvalue)" ]]; then rm "$tmpfilename"; fi
echo Removing Temp File
fi
if [ -r "$tmpfilename" ]; then
echo Unmute $mixerdev
leftvalue=`cat "$tmpfilename" | head -1`
rightvalue=`cat "$tmpfilename" | tail -1`
amixer sset "$mixerdev" $leftvalue,$rightvalue
rm "$tmpfilename"
else
echo Mute $mixerdev
leftvalue=`amixer sget "$mixerdev" | tail -2 | cut --delimiter=" " --fields=6 | head -1`
rightvalue=`amixer sget "$mixerdev" | tail -2 | cut --delimiter=" " --fields=6 | tail -1`
printf "$leftvalue\n$rightvalue" > "$tmpfilename"
echo $leftvalue
echo $rightvalue
amixer sset "$mixerdev" 0,0
fi
# chmod +x script-mute
# mv script-mute /usr/bin
mixerdev=$1
tmpfilename=~/".tmpmutealsa_$mixerdev"
if [ -r "$tmpfilename" ]; then
leftvalue=`amixer sget "$mixerdev" | tail -2 | cut --delimiter=" " --fields=6 | head -1`
rightvalue=`amixer sget "$mixerdev" | tail -2 | cut --delimiter=" " --fields=6 | tail -1`
if [[ "(0)" != "($leftvalue)" || "(0)" != "($rightvalue)" ]]; then rm "$tmpfilename"; fi
echo Removing Temp File
fi
if [ -r "$tmpfilename" ]; then
echo Unmute $mixerdev
leftvalue=`cat "$tmpfilename" | head -1`
rightvalue=`cat "$tmpfilename" | tail -1`
amixer sset "$mixerdev" $leftvalue,$rightvalue
rm "$tmpfilename"
else
echo Mute $mixerdev
leftvalue=`amixer sget "$mixerdev" | tail -2 | cut --delimiter=" " --fields=6 | head -1`
rightvalue=`amixer sget "$mixerdev" | tail -2 | cut --delimiter=" " --fields=6 | tail -1`
printf "$leftvalue\n$rightvalue" > "$tmpfilename"
echo $leftvalue
echo $rightvalue
amixer sset "$mixerdev" 0,0
fi
# chmod +x script-mute
# mv script-mute /usr/bin
Tento skript si uložte třeba podle příkladu do /usr/bin a znovunačtěte nastavení Fluxboxu. Tlačítka hlasitosti jsou teď pěkně funkční. :-)