Esta dica serve tanto para usuários de notebooks, quanto para usuários de desktop que tem teclados especiais (teclado multimídia, etc).
Recentemente instalei o
Ubuntu Dapper Drake em minha máquina (um notebook Compaq Presario X1000), tentei instalar o XGL, mas não achei documentação legal sobre XGL com KDE e placas de vídeo ATI, deixei de lado por enquanto, todo o hardware foi reconhecido e funcionou normalmente (inclusive o adaptador wireless, que com o sarge me deu um trabalhão pra funcionar!), então decidi configurar as teclas de função especiais, para que pudesse:
- Aumentar o volume;
- Diminuir o volume;
- Emudecer a placa de som;
- Usar funções multimídia (play/pause, stop, previous e next) no amarok;
- Abrir o navegador;
- Trancar a estação;
- Ajustar os níveis de brilho.
De todas estas funções, as únicas que já funcionavam normalmente eram as de ajuste do brilho, pois independem do SO.
Para mapear as outras funções, o primeiro passo é descobrir qual o código que o X recebe das teclas quando elas são pressionadas, faremos isso utilizando o aplicativo
xev. Abra um xterm e abra o xev, ele te mostrará uma tela parecida com esta:
Todas as teclas digitadas terão uma saída na janela do xterm, como o exemplo abaixo:
KeyPress event, serial 31, synthetic NO, window 0x3200001,
root 0x4c, subw 0x0, time 2555187215, (-348,291), root:(250,313),
state 0x0, keycode 47 (keysym 0x3b, semicolon), same_screen YES,
XLookupString gives 1 bytes: (3b) ";"
XmbLookupString gives 1 bytes: (3b) ";"
XFilterEvent returns: False
Neste caso, a tecla pressionada foi ponto-e-vírgula (semicolon em inglês) e o que precisamos saber para mapear as teclas de função especiais é qual o seu keycode, mostrado na linha:
state 0x0, keycode 47 (keysym 0x3b, semicolon), same_screen YES,
Pressione as teclas que você precisa mapear, e anote o código de todas elas, utilizaremos-os já já.
Dica: Preste atenção se as teclas não utilizam dois keycodes em conjunto, no meu caso ao pressionar "Fn" + "F6" ele me informava dois códigos: 115 e 46, não prestei atenção nisto, e fiz o mapeamento da F6 para o keycode 46, quando ativei o mapeamento, fiquei sem a tecla "L", que utiliza o mesmo keycode!
Após termos o código de todas as teclas que queremos ativar, iremos criar um arquivo (dê o nome que preferir, no meu caso, chamei-o de teclado) no seu $HOME/.kde/Autostart (se estiver usando Gnome ou outro window manager, adicione isto ao /etc/rc.local, para ter certeza que será carregado durante o boot - não realizei testes desta forma, mas deve funcionar), com o seguinte conteúdo:
$ vim ~/.kde/Autostart/teclado
#!/bin/bash
# Todas as funções foram mapeadas via KDE Autostart
xmodmap -e 'keycode 174=XF86AudioLowerVolume' # Baixa volume
xmodmap -e 'keycode 176=XF86AudioRaiseVolume' # Aumenta volume
xmodmap -e 'keycode 160=XF86AudioMute' # Função Mute
# Funções Ativadas via KDE Control Center
xmodmap -e 'keycode 178=XF86HomePage' # Abre o navegador
xmodmap -e 'keycode 162=XF86AudioPlay' # Função Play
xmodmap -e 'keycode 164=XF86AudioStop' # Função Stop
xmodmap -e 'keycode 144=XF86AudioPrev' # Musica anterior
xmodmap -e 'keycode 153=XF86AudioNext' # Proxima musica
xmodmap -e 'keycode 115=XF86ModeLock' # Tranca a estação
Troque os keycodes acima pelos keycodes que encontrou em seu teclado, com as respectivas funções que você quer ativar, no meu caso, as únicas que funcionaram diretamente com a configuração do Xorg foram as de controle de volume, todas as outras foram mapeadas dentro do KDE para funcionarem. Para consulta sobre KeyMappings que podem ser usados em conjunto com o Xorg, consulte o arquivo: /usr/share/X11/XKeysymDB .
Após editar o arquivo, torne-o executável, com o comando:
$ chmod +x $HOME/.kde/Autostart/teclado
Após salvar o arquivo, execute-o com o comando:
$ $HOME/.kde/Autostart/teclado
Para que os mapeamentos sejam realizados.
Após isto, vamos editar algumas opções de controle do teclado no /etc/X11/xorg.conf, são as funções XbdModel e XbdRules, altere-as de:
Option "XkbModel" "pc104"
Option "XkbRules" "xorg"
Para:
Option "XkbModel" "microsoftpro"
Option "XkbRules" "xfree86"
Após isto, reinicie o servidor X, neste ponto, as teclas de controle de volume do Presario já estavam funcionando, faltando somente a configuração das outras teclas, para isto, abra o kcontrol e vá até: "Regional e Acessibilidade" -> "Ações de Entrada", adicione um grupo, que no meu caso chamei de "Teclas especiais do notebook", e dentro dele as ações que deseja, no meu caso ficaram sendo chamadas:
- Abrir navegador;
- Função play/pause;
- Função stop;
- Música anterior;
- Música seguinte.
Para adicionar uma função, clique no botão "Nova Ação" no rodapé da página, na aba Geral informe um nome para a mesma, na aba Gatilhos, clique em Novo -> Disparo do Atalho, ma janela que se abrirá, clique no botão "Nenhum" e em seguida informe o atalho que você gostaria de mapear (ex: Fn + F3 para abrir o navegador), clique em Ok e vá para a aba "Ações", nela, clique em Novo -> Comando/URL, e na janela que se abre, informe o nome do comando que gostaria de executar, no meu caso para o mapeamento de abertura do navegador, informei na janela o comando firefox.
Após mapear todas as teclas que desejar, clique em Aplicar, e elas já estarão ativas no sistema. Este tutorial pode ser portado para outras distribuições e outros window managers facilmente, bastando para isto verificar a localização dos arquivos, e como mapear as teclas de atalho nos window managers.
Descrição dos meus mapeamentos:
Abrir navegador
Atalho Mapeado: Fn + F3
SymKey do Xorg mapeada: XF86HomePage
Ação executada: firefox
Play/Pause
Atalho Mapeado: Fn + F9
SymKey do Xorg mapeada: XF86AudioPlay
Ação executada: amarok -t
Stop
Atalho Mapeado: Fn + F10
SymKey do Xorg mapeada: XF86AudioStop
Ação executada: amarok -s
Música Anterior
Atalho Mapeado: Fn + F11
SymKey do Xorg mapeada: XF86AudioPrev
Ação executada: amarok -r
Música Seguinte
Atalho Mapeado: Fn + F12
SymKey do Xorg mapeada: XF86AudioNext
Ação executada: amarok -f
DiminuirVolume
SymKey do Xorg mapeada: XF86AudioLowerVolume
Aumentar Volume
SymKey do Xorg mapeada: XF86AudioRaiseVolume
Emudecer placa de som
SymKey do Xorg mapeada: XF86AudioMute