29.11.07

Lenovo N200 - zvukové klávesy

Titulek je možná zavádějící, nicméně řešení, které tu chci popsat, spočívá ve zprovoznění multimediálních kláves umožňujících nastavování hlasitosti zvuku. Řešení je pro notebook Lenovo N200 a okenní manager Fluxbox, pokud se však někdo vyzná ve svém okenním manageru či desktopu, neměl by pro něj být problém to předělat.
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:
#!/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

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:

Anonymní řekl(a)...

a je ten script-mute vubec nutnej? napr. ja mam na tom tlacitku namapovany "amixer sset Master toggle"

m1c4a1 řekl(a)...

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.

m1c4a1 řekl(a)...

Jo, už vím:
amixer sset Master toggle
amixer: Unable to find simple control 'Master',0