Mostrar mensagens com a etiqueta xmodmap. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta xmodmap. Mostrar todas as mensagens

quinta-feira, 16 de julho de 2009

Configurar um teclado multimédia em Debian

Certo dia, depois de já ter instalado Debian e alguns jogos no computador do meu irmão, resolvi tentar configurar o teclado multimédia que tinha este computador.



Este teclado tem umas quantas teclas multimédia que não eram reconhecidas pelo KDE ou mesmo pelo próprio sistema operativo... se fosse ao Centro de Controle do KDE, á parte de configuração do teclado, este não aparecia na lista, e a lista de teclados suportados até é bastante grande... e a marca deste teclado até é estranha, logo haveria que arranjar uma alternativa de configuração manual. No caso do meu computador, tenho um teclado Genius Luxemate Scroll U+P, e este até vinha na lista e nem precisei de o configurar practicamente.
Estes teclados multimédia normalmente são feitos para Windows e vêm com CD's de instalação com os respectivos controladores. Ora isto não quer dizer que em Linux, embora não existam estes controladores, que o teclado não envie informação ao computador quando estas teclas especiais são pressionadas. Em windows ficamos com os controladores ou drivers instalados para que o teclado funcione e mais algum serviço sendo executado para tal efeito, mas em Linux, simplesmente configuramos para que seja detectado (de forma manual ou não ) e ele funciona sem necessidade de ter mais algum serviço ou demónio ( costumam-se chamar demónios aos serviços em Linux).
Esta guia tem como objectivo configurar as teclas através de uma sessão gráfica, para que possam ser configuradas através de qualquer ambiente de trabalho. Neste caso eu uso KDE que é o que mais gosto, mas suponho que seja semelhante nos muitos outros ambientes de trabalhos que existem.

Primeiro passo será determinar os códigos das teclas ou keycodes.

Para saber qual código coorresponde a qual tecla, deveremos usar uma aplicação chamada xev, que se ocupa de informar dos eventos que ocurram em (servidor gráfico).

Lançamos ou executamos xev desde uma linha de comandos ou terminal (estando aberta a sessão gráfica):

$ xev

De seguida aparecerá uma janela chamada "Event Tester" que é a que "sente" tudo o que se faça sobre ela, seja com o rato ou o teclado, enquanto que na janela da linha de comandos desde onde a lançámos é que vão aparecendo os eventos.

Selecionando o "Event Tester" vamos carregando no botões multimédia um a um e vendo o que sai na linha de comandos. Quando carregamos no botão "play" isto é o que aparece:

KeyRelease event, serial 31, synthetic NO,
window 0x2e00001,
root 0x63, subw 0x0, time 1412932703, (92,-
5), root:(163,415),
state 0x10, keycode 162 (keysym 0x0,
NoSymbol), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False


Como se pode ver aparece keycode 162 e também aparece NoSymbol. Isto significa que não foi definina nenhuma acção para o botão ou caracter.

Segundo passo será definir os simbolos para os keycodes usando xmodmap.

xmodmap é uma aplicação de linha de comandos ou terminal que permite modificar o mapa de caracteres do teclado para as X, adicionando, eliminado ou intercambiando simbolos.


Criamos um ficheiro de texto sem formato ( podemos criar este ficheiro com kate por exemplo, ou kwrite ) que contenha os keycodes e seus respectivos simbolos, um por linha, da seguinte maneira:


keycode N = símbolo


onde N é o número do keycode que obtivemos com xev e simbolo é qualquer nome como o qual queiramos identificar ao botão em questão. Quando terminado gravamos o ficheiro com o nome de .xmodmap


... E por via das dúvidas, gravei-o também com o nome de .xmodmaprc na minha pasta home


NOTA: o nome do ficheiro começa por um ponto, o que segnifica que será um ficheiro oculto.


Aqui fica um exemplo do que encontrei e de como ficou o meu ficheiro (neste caso ficaram os dois iguais, tanto .xmodmap como .xmodmaprc)




keycode 144 = XF86AudioPrev
keycode 153 = XF86AudioNext
keycode 160 = XF86AudioMute
keycode 161 = XF86Calculator
keycode 162 = XF86AudioPlay
keycode 164 = XF86AudioStop
keycode 174 = XF86AudioLowerVolume
keycode 176 = XF86AudioRaiseVolume
keycode 178 = XF86HomePage
keycode 222 = XF86PowerDown
keycode 223 = XF86Sleep
keycode 227 = XF86WakeUp
keycode 229 = XF86Search
keycode 230 = XF86Favorites
keycode 231 = XF86Refresh
keycode 232 = XF86Stop
keycode 233 = XF86Forward
keycode 234 = XF86Back
keycode 235 = XF86MyComputer
keycode 236 = XF86Mail
keycode 237 = XF86AudioMedia


Os nomes para os botões estão definidos no ficheiro
/usr/include/X11/XF86keysym.h


Aplicar a configuração 


Executamos na linha de comandos:


$ xmodmap .xmodmaprc


É claro que temos de executar este comando no directório ou pasta em que tenhamos o ficheiro .xmodmaprc


E agora só falta experimentar as teclas de novo com xev, depois de ter aplicado a configuração com xmodmap. Ao carregar em alguma tecla, neste caso a tecla de baixar o volume de som seria:



KeyRelease event, serial 31, synthetic NO,
window 0x2e00001,
root 0x63, subw 0x0, time 1418716437, (102,-
28), root:(106,413),
state 0x0, keycode 17 (keysym 0x1008ff11,
XF86AudioLowerVolume
XF86AudioLowerVolume), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False


Para fazer com que estas mudanças sejam aplicadas ao iniciar a sessão, criamos outro ficheiro  que contenha o comando anterior para aplicar a configuração que fizemos.


O ficheiro a criar deve ser um ficheiro de texto planos sem formato com o seguinte conteúdo:



#!/bin/bash
xmodmap .xmodmaprc
exit


Devemos gravar o ficheiro com a extensão .sh, já que vai ser um script para bash. Devemos também dar permissos de execução a este ficheiro. Depois de o gravar com o nome que quisermos e com a extensão .sh
 

Por exemplo: teclas.sh


Fazemos click direito em cima do ficheiro e escolhemos propriedades, vamos á aba "permissos" e marcamos a casinha que diz " é executável".


Depois metemos este ficheiro teclas.sh , dentro da nossa home, em:


 ~/.kde/Autostart/


ou seja...


/home/nome-de-usuário/.kde/Autostart/


Notar que a pasta /.kde é oculta e devemos habilitar a vista de ficheiros ocultos para que possamos entrar nela e copiar o nosso ficheiro.


Acto seguido só falta configurar os atalhos de teclado para os programas que queiramos, como amarok por exemplo,...para tal vamos ao Centro de Control > Regionalidade e acessibilidade > atalhos de teclado e aí escolhemos a tecla multimedia.

Esta guia foi feita baseada em experimentação (cabeçadas na parede) e através desta guia que me ajudou bastante. Espero que sirva de utilidade a alguém.