
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í. :-)
3 komentáře:
a je ten script-mute vubec nutnej? napr. ja mam na tom tlacitku namapovany "amixer sset Master toggle"
toggle jsem taky v manuálových stránkách amixeru našel, bohužel se mi nepodařilo z nevím jakého důvodu to takhle jednodušše rozjet, proto ten skript.
Jo, už vím:
amixer sset Master toggle
amixer: Unable to find simple control 'Master',0
Okomentovat