Ubuntu na terra do pão di queijo

13/12/2006

Notebook com teclas multimedia no linux.

Filed under: Ubuntu — Leonardo Amaral @ 9:26

Recentemente, mais exatamente antes de ontem (2 meses antes desta postagem – btw) , comprei um notebook da HP (ze2410). E eu fiquei grilado, todo mundo vira e fala “A tecla disso e daquilo não funcionou no meu linux!”, e eu fui a caça.

O Sistema

Este note roda o Kubuntu 6.06 (Upgrade: Kubuntu 6.10) com os pacotes do KDE do kubuntu.org e kde 3.5.4 (Upgrade: 3.5.5). Vou presumir que os senhores leitores tenham tudo configurado. Video, som, wireless e outras parafernalhas.

Tecla numero 1 – Wireless

Mamão com açucar! Configurei o ndiswrapper na broadcom e bingo! Se tiver UP, ele acende, se tiver DOWN, ele apaga, e o botão funciona.

Adendo: Ubuntuzeiros: O meta-pacote ndiswrapper traz o ndiswrapper-utils-1.1, que é INCOMPATIVEL com o modulo do kernel. A solução é remover o pacote ndiswrapper-utils-1.1 e instalar o 1.8. Isso vale para o edgy.

Teclas numero 2 – Volume e multimedia

Aqui vem a parte interessante. Boa parte dos notebooks geram keycodes para as teclas multimedia. Bom, tudo consiste em executar o “xev” e pressionar uma tecla. Ele vai mostrar na saida do console, várias informações sobre o evento, incluindo o que ocasionou, e o código da tecla. A saída é aproximadamente assim:

KeyRelease event, serial 31, synthetic NO, window 0x3a00001,
root 0x76, subw 0x0, time 2074821604, (80,239), root:(485,263),
state 0x0, keycode 174 (keysym 0x1008ff11, XF86AudioLowerVolume), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False

A parte em que os senhores devem notar é o keycode, que no caso desta tecla é o 174. Me parece que estas no Edgy já vem configuradas, mas como minha config vem do dapper, o xbindkeys (adiante) toma o lugar. Isto é bom porque o xbindkeys permite escolher o executavel (para volume, se o sistema reconhecer e bom, pois economiza um processo, mas, se como adiante quiser comandar outras coisas, ai fica melhor usar o xbindkeys).

Teclas numero 2.1 – xbindkeys

O xbindkeys é um programa que associa executaveis a toques das teclas cadastradas em seu arquivo de configuração. Por padrão é executado sobre ~/.xbindkeyrc (Ou seja, um profile para cada usuário), e este problema é sanado globalmente com o uso da opção “-f nomedoarquivo.conf”.

Portanto eu criei um arquivo no /etc chamado xbindkeyrc e coloquei na inicialização do meu KDE. Vejam:


leleobhz@kahlua:~$ cat /home/leleobhz/.kde/Autostart/pavilion_keys
#!/bin/bash
xbindkeys -f /etc/xbindkeyrc

Eu coloquei no meu ~/.kde porque só tem meu usuário no kde. Caso os senhores queiram suas teclas literalmente globais, coloquem um script em /etc/X11/Xsession.d/.

E o que tem no xbindkeyrc? Vejamos…


leleobhz@kahlua:~$ cat /etc/xbindkeyrc
"amixer sset Master 1+"
c:176
"amixer sset Master 1-"
c:174
"amixer sset Master toggle"
c:160
"kfmclient openProfile webbrowsing"
c:178
"/usr/bin/pavilion_player_keys playPause"
c:162
"/usr/bin/pavilion_player_keys stop"
c:164
"/usr/bin/pavilion_player_keys prev"
c:144
"/usr/bin/pavilion_player_keys next"
c:153
"dcop kdesktop KScreensaverIface lock"
c:146

Como vocês podem ver, primeiro vem o comando, depois a tecla que corresponde, que é aquele keycode. este /usr/bin/pavilion_player_keys é um script que consegue comandar tanto o amarok quanto o kaffeine, que me possibilita comandar o DVD quando estiver tocando, e quando não, abre o amarok e toca musicas. A seguir, o script:


#!/bin/bash
# Por Leonardo Silva Amaral
# Este script está liberado sobre a licença GNU GPLv2

#GAMBIARRAAAAAAAAAAAAAAAAAAAAAAAAAAAA!!!!!! :p

FUNCTION=$1

function getPlayer () {
if [[ "$(dcop kaffeine KaffeineIface isPlaying 2>&1)" != "call failed" ]]; then
PLAYER="p_kaffeine"
elif [[ "$(dcop amarok player isPlaying 2>&1)" != "call failed" ]]; then
PLAYER="p_amarok"
else
PLAYER="p_amarok"
PLAYER_OPENED=False
fi
}

function p_amarok () {
case $FUNCTION in
playPause)
dcop amarok player playPause
;;

stop)
dcop amarok player stop
;;

next)
dcop amarok player next
;;

prev)
dcop amarok player prev
;;
esac
}

function p_kaffeine () {
case $FUNCTION in
playPause)
if `dcop kaffeine KaffeineIface isPlaying`; then
dcop kaffeine KaffeineIface pause;
dcop kaffeine kaffeine_mainview hide;
else
dcop kaffeine KaffeineIface play;
dcop kaffeine kaffeine_mainview hide;
fi
;;

stop)
dcop kaffeine KaffeineIface stop
;;

next)
dcop kaffeine KaffeineIface next
;;

prev)
dcop kaffeine KaffeineIface previous
;;
esac
}

# Se o player for os alternativos, para controle, ele controla o que tá aberto. Senao, inicia o padrao:

getPlayer

if [[ $PLAYER == "p_amarok" ]]; then
if [[ $PLAYER_OPENED == False ]]; then
amarok
fi
p_amarok
else
p_kaffeine
fi

Enfim, como eu uso kubuntu, posso me dar ao luxo de usar o DCOP para comandar meus players. Não sei se o gnome tem sistema parecido, mas se puder controlar a partir de um executavel, o céu é o limite.

Teclas numero 2.2 DCOPs interessantes

– “dcop kdesktop KScreensaverIface lock” >>> Isso ativa o bloquear tela. O HP tem um botão para isso, e ele não fica inutil não.

– “dcop kaffeine KaffeineIface play” >>> dcop kaffeine KaffeineIface comanda tudo que você pode ver quando você esta na tela do kaffeine. Play, Pause, Next e Prev são evidentes. Vale lembrar que o kaffeine não tem playPause como o amarok, portanto é preciso um script para parar ou executar, de acordo com a saida do dcop “isPlaying” (Motivo original do script que criei).

– “dcop amarok player playPause” >>> dcop amarok player vale para o mesmo que citei antes, só que para o amarok.

Finalizando

Enfim, está é minha experiência com notebook no linux. Estas dicas valem também para alguns teclados multimedia que encontramos por ae, portanto é valido para qualquer um que tenha algum teclado alienigena e queira usar todos os seus recursos.

7 Comentários »

  1. Artigo muito bom.
    Mas para controlar o amarok pelas teclas de multimídea eu uso os comandos:

    “amarok –play-pause”
    “amarok -s”
    “amarok -r”
    “amarok -f”

    no xbindkeys.

    Comentário por fabiocpn — 14/12/2006 @ 11:12 | Responder

  2. Fabiocpn: Sim, pode ser feito assim também, mas eu dei um pouco de preferencia para o uso do DCOP, pois com ele você pode controlar qualquer app kde (e eu queria dizer isso mesmo) e também abre margem a outros sistemas interprocessuais, como o DBUS (para uma pancada de app gnome, xmms outras…).

    Comentário por leleobhz — 14/12/2006 @ 13:53 | Responder

  3. […] Aquelas teclinhas quase inúteis do seu teclado agora têm salvação: com este tutorial você aprende a configurar cada uma delas com as funções desejadas, passo a passo e sem mistérios. O tutorial focaliza o Amarok e o Kaffeine, no KDE, podendo ser adaptado para qualquer programa, e foi publicado no blog do Leleobhz, Ubuntu na terra do pão di queijo. Leia a íntegra do tutorial aqui. […]

    Pingback por Notebook com teclas multimedia no linux at Fatalnet — 14/12/2006 @ 20:22 | Responder

  4. Alguém sabe o que fazer quando a tecla não gera o código? Agradeço qualquer ajuda.

    Comentário por Marcelo — 15/02/2007 @ 1:20 | Responder

  5. Marcelo, essas teclas normalmente geram códigos ACPI ao invés de passarem os dados para os eventos de teclado. Nesse caso não têm muito jeito caso o ACPI não reconheça seu botão. Se reconhecer, dai você pode até adaptar estes scripts para responder aos comandos do ACPI, ok?

    Se não aparecer nem no ACPI nem no keyboard event, pode ser que seja algo alienígena gerando esses códigos (Exemplo: tecla do wireless), dai depende de ver como ela manda e programar, assim como qualquer dispositivo não reconhecido no Linux.

    Comentário por Leonardo Amaral — 21/02/2007 @ 16:11 | Responder

  6. Marcelo, fica um dica!
    Para utilização de programas multimedia, use o remoot!!
    muito bom pode controlar o amarok, kaffeine e muitos mais… sem ter que se preocupar em utilizar as teclas apenas em um ou outro programa….

    Comentário por Pedro Maia — 20/11/2007 @ 11:05 | Responder

  7. […] Leia a íntegra do tutorial aqui. […]

    Pingback por Notebook com teclas multimedia no Linux | cyberblognews — 07/01/2011 @ 10:02 | Responder


RSS feed for comments on this post. TrackBack URI

Deixar mensagem para Marcelo Cancelar resposta

Blog no WordPress.com.