Quando o Fn + Volume quebra no Gutsy/Feisty com KDE 3.5.8…
Se vc atualizou o seu kubuntu feisty para o kde 3.5.8 ou instalou o Kubuntu Gutsy Gibbon (7.10), provalelmente as suas teclas de Fn + Volume pararam de funcionar de maneira correta no KDE (até funcionam, mas não mudam o volume e o indicador não passa de 11%).
Pois bem, isso deve-se a uma regressão do kmilo em conjunção com o kmix que ocorreu no desenvolvimento do 3.5.7 para o 3.5.8.
Segue a solução:
Primeiro, crie um arquivo chamado vol.sh e cole este código lá dentro:
#!/bin/sh
# vol.sh
# by deepak sarda
# public domain
# functions
usage() {
echo "Usage: $0 (less|more|mute)"
}
popup() {
# echo "$*"
# display popup with 1 second delay. Also, background the process so that
# script doesn't block. This lets us invoke the script in quick succession.
kdialog --title "Headphone" --passivepopup "$*" 1 &
}
displayProgress() {
if [ $kmilo ]; then
dcop kded kmilod displayProgress "$1" "$2" &
else
popup "$1 $2%"
fi
}
displayText() {
if [ $kmilo ]; then
dcop kded kmilod displayText "$*" &
else
popup $*
fi
}
currentVol() {
current_vol=`$app absoluteVolume $dev`
return $(($current_vol*100/$max_vol))
}
# Usage check
if [ $# -ne 1 ]; then
usage
exit
fi
kmilo=`dcop kded | grep -m 1 ^kmilod`
if [ ! `dcop | grep -m 1 ^kmix` ]; then
displayText "kmix not found"
exit
fi
app="dcop kmix `dcop kmix | grep ^Mixer`"
dev=2 # The headphone is device index 2 on my system
max_vol=`$app absoluteVolumeMax $dev`
if [ "$1" = "less" ]; then
$app decreaseVolume $dev
currentVol
displayProgress "Headphone Volume" $?
elif [ "$1" = "more" ]; then
$app increaseVolume $dev
currentVol
displayProgress "Headphone Volume" $?
elif [ "$1" = "mute" ]; then
$app toggleMute $dev
if [ `$app mute $dev` = "true" ]; then
displayText "Headphone mute on"
else
displayText "Headphone mute off"
fi
else
usage
fi
Agora atribua permissão de execução ao mesmo:
chmod 755 vol.sh
e copie-o para /usr/local/bin
sudo cp vol.sh /usr/local/bin
NOTA: Agora você pode testar se o seu volume está funcionando corretamente digitando vol.sh more ou vol.sh less. Se não mudar o valor correto, a linha acima dev=2 indica que o dispositivo a controlar é o 2 na minha configuração do alsa. Experimente mudar o número e repetir o processo até acertar o dispositivo correto.
Agora a configuração final:
- Abra o System Settings do Kubuntu, vá na opção Accessibility e em seguida em Input Actions.
- Agora clique em New Action, no action name digite Volume Up, e no action type escolha generic,
- Em Triggers, clique em New e shorcut trigger e crie a combinacao de teclas desejada, no caso, fn + tecla de volume up que no meu note fica na seta para cima. O novo shortcut trigger deve aparecer como XF86AudioRaiseVolume.
- Em Actions, clique em new e Command/URL e digite vol.sh more.
- Clique em Apply.
Agora repita a operação mudando apenas o action name de Volume Up para Volume Down, o shortcut trigger para fn + tecla de volume down. e em Command/URL digite vol.sh less.
Agora as suas teclas de função conseguem controlar novamente o som 🙂
Enjoy!
UPDATE: O wordpress tem a mania de quebrar o código digitado, dessa forma, procurei e encontrei o código original da autoria do deepak sarda e adiciono o link para tornar mais fácil a cópia do código acima.
Permalink: http://antrix.net/journal/techtalk/dcop_volume2.html
2 thoughts on “Quando o Fn + Volume quebra no Gutsy/Feisty com KDE 3.5.8…”
Leave a Reply Cancel reply
Filed under: Uncategorized - @ 29/11/2007 13:12
Esta dando um erro na linha 8, “(” inesperado…
Se tiro os parenteses ele diz que nao pode encontrar “mute”.
Ainda, quando tiro “( e )” na linha 8, aparece um erro na linha 16, dizendo que o “else” é inesperado.
Se puder me ajude… [] Davi.
Davi,
O wordpress tem a estúpida mania de quebrar o código digitado 😛 vi de regra, refaça todas as aspas duplas, onde tem um menos (-) substitua por 2 (–) e tenha atenção às msgs de erro que o bash manda de volta.
De qualquer forma, eu achei o código original pelo deepak sarda que parece ter um blog mais esperto para código 🙂
Atualizei o artigo com o link correto.
Desculpe pela confusão 🙁