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

This entry was posted in Uncategorized. Bookmark the permalink.

2 Responses to Quando o Fn + Volume quebra no Gutsy/Feisty com KDE 3.5.8…

  1. Davi Neves says:

    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.

  2. padoca says:

    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😦

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s