domingo, 8 de julho de 2007

Teclas multimidia no Linux com xmodmap e xev

Desde que comprei meu notebook novo, nunca usei as teclinhas miltimidia dele. Tem várias teclas aqui que no Window$ é só apertar e já sai funcionando. E claro, sabemos que no Linux as coisas são um pouco mais na unha (no Ubuntu deve ser até menos traumático, mas no Gentoo ainda é na unha - não que isso seja uma coisa ruim, muito pelo contrário...Mas enfim, isso já não vem ao caso)

Aumentar ou diminiur o volume, travar a tela, abrir um navegador e até passar músicas, tem tudo isso no meu teclado multimidia, mas eai? Como usar?

Vamos direto ao assunto!

Primeiro use o xev para saber qual a keycode o botão gera: Execute o xev num terminal, deixe o foco naquela telinha que irá aparecer e vá apertando os botões que quiser descobrir a keycode. Teremos uma saída mais ou menos assim:

KeyRelease event, serial 30, synthetic NO, window 0x2600001,
root 0x75, subw 0x0, time 17697807, (69,-12), root:(1120,30),
state 0x0, keycode 144 (keysym 0x1008ff16, XF86AudioPrev), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False

Nesse exemplo, apertei uma tecla que volta uma música. O keycode dela (144) ela já está mapeada no meu xmodmap (veja mais pra frente) e por isso o nome da tecla aparece na saída do xev (XF86AudioPrev).

Depois de anotado todos os keycodes necessários, partimos para o xmodmap. Escreva um arquivo no home de seu usuário com o nome .xmodmap com o seguinte conteúdo:

otubo@lisa ~ $ cat .xmodmap
keycode 176 = XF86AudioRaiseVolume
keycode 174 = XF86AudioLowerVolume
keycode 160 = XF86AudioMute
keycode 178 = XF86WWW

keycode 162 = XF86AudioPlay
keycode 164 = XF86AudioStop
keycode 144 = XF86AudioPrev
keycode 153 = XF86AudioNext
!keycode 236 = XF86Mail

Obviamente essa é a minha configuração. Anote seus próprios keycodes e substitua convenientemente no seu arquivo. As intruções que começam com exclamação são comentários. Só coloquei a instrução XF86Mail pra dizer que existe, já que não a uso. Para que isso funcione é necessário ainda executar o comando xmodmap:

$ xmodmap ~/.xmodmap

E, para que isso funcione *sempre*, sugiro colocar essa linha no seu .xinitrc.

Ta mas e dai? Como faço pra usar isso no meu gerenciador de janelas?
Bom eu uso OpenBox3 e nele a configuração é bem fácil. É só editar o arquivo ~/.config/openbox/rc.xml e (por exemplo) mapear as teclas desta forma:

<keybind key="XF86WWW">
<action name="execute"><execute>firefox-bin</execute></action>
</keybind>

Bom, é isso ai. Espero ter adicionado mais praticidade ao seu dia-a-dia no Linux :-)
Dúvidas, críticas e sugestões: Postem a vontade!
Postar um comentário