Configurando teclas especiais

Publicado por Anderson Leite em 23/09/2006

[ Hits: 47.127 ]

 


Configurando teclas especiais



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

Outras dicas deste autor

Monitorando o uso de processador de servidores (locais e remotos) com o Nagios + NRPE

SMTP Auth com Postfix e SASL (sem domínios virtuais)

Dell com controladora PERC x Debian com Kernel 2.6.xx

Recuperando a senha perdida do MySQL

Leitura recomendada

Samba - Como autenticar no Active Directory com Winbind

Configurando seu Slackware facilmente com PKGTool

Problema com acentuação das pastas do usuário no XFCE sob Slackware e de quebra altere as pastas de usuário padrão

Squid autenticando via radius

Miniatura de arquivos SWF no Linux

  

Comentários
[1] Comentário enviado por medeiros64 em 23/09/2006 - 12:32h

show essa dica hem. já esta nos favoritos

[2] Comentário enviado por morvan em 24/09/2006 - 13:03h

Parabéns, rootkit (Anderson)! Excelente artigo, quer dizer, dica. Digo isso porque vez por outra nos deparamos com o inverso (artigos que seriam muito mais uma dica). Excelente a agregação de conteúdo que esta dica nos incorpora. Vou me aprofundar ainda mais - graças ao alento dado por esta dica.
Bom dia a todos.
Morvan

[3] Comentário enviado por rootkit em 25/09/2006 - 05:30h

O espírito é esse: ajudar a comunidade :)

[4] Comentário enviado por removido em 25/09/2006 - 19:29h

Parabéns!!! Excelente dica.

:::... Viva o Linux ...:::

[5] Comentário enviado por d4rkness em 27/09/2006 - 13:21h

Mt bom. Parabéns

[6] Comentário enviado por decohab em 30/10/2006 - 16:14h

Valeu pela dica amigo consegui resolver meu problema com algumas teclas ke não estava funcionando porém adiquiri um teclado novo de multimidia com um monte de teclas especiais.. modelo kb-2825 e as teclas iniciais se ker geraram key code.. Tem outra solução para saber se ao menos as teclas estão funcionando??

Muito Obrigado!

[7] Comentário enviado por Raptor em 06/11/2006 - 01:48h

Nossa que complicado, me perdi na metade... :(
Você saberia me responder se posso fazer este mapeamento utilizando as teclas que possuem a janela do Windows, ficam entre as teclas "Ctrl" e "Alt"?
E aquela tecla que abre um menu, que fica ao lado da tecla "AltGr"?
E para que serve a troca de opções...
de:
Option "XkbRules" "xorg"
para:
Option "XkbRules" "xfree86"
Isto pode causar algum problema no meu sistema?
Obrigado.

[8] Comentário enviado por rootkit em 06/11/2006 - 11:09h

Raptor,

Teoricamente, qualquer tecla pode ser mapeada para desempenhar outras funções, o que pode acontecer, é da tecla enviar dois códigos (como no caso da minha combinação Fn + F6) que além de mandar o keycode da tecla F6, mandava também o keycode da tecla "L", é só verificar na saída do xev qual o keycode, e fazer o mapeamento seguindo a dica.

A mudança da opção do XkbRules, é para que o servidor X possa interpretar os códigos XF86<código>, como por exemplo o código: XF86AudioRaiseVolume

[9] Comentário enviado por arcanjo_mg em 15/02/2007 - 22:01h

Amigo, tenho um notebook Acer Aspire 3690 e não consegui fazer isso com ele, muito estranho, pois aperto as teclas especiais e nenhum sinal é enviado, nada muda no terminal, somente usando as teclas comuns mesmo para aparecer alguma coisa, as especias que eu tanto queria ativar deu nada. Sabe o que pode ser?

[10] Comentário enviado por rootkit em 16/02/2007 - 05:03h

arcanjo_mg,

Realmente o sintoma que você relata é bem estranho, uma outra opção é utilizar o xbindkeys, achei um excelente artigo sobre ele em: http://applications.linux.com/article.pl?sid=07/01/10/176226&from=rss

abraço,

rootkit

[11] Comentário enviado por Raptor em 22/03/2007 - 22:27h

Consegui fazer aqui no meu teclado Microsoft Wireless Optical Desktop 1000.
Segui a dica mais detalhadamente e funcionou exatamente como descrito.
Só algumas teclas - Minhas imagens, Minhas músicas e Mídia - é que não funcionaram, não sei por, mas na tela do "xev" não aparece nenhum código.
Obrigado pela dica amigo e parabéns.

[12] Comentário enviado por bigbart em 11/08/2007 - 21:30h

Cara, não funcionou no presario v6000. as teclas especiais são as mesmas do seu note. O que pode está errado?

Ps.: uso Kurumin 7.0

[13] Comentário enviado por removido em 02/01/2008 - 16:21h

Dica muito boa para quem quer personalizar o seu GNU/Linux. Muito bom mesmo.

[14] Comentário enviado por flavioc em 14/01/2008 - 19:22h

Legal a dica sobre atalhos de teclado, Anderson. No meu caso tenho um teclado wireless da Microsoft e no gnome, conseguir associas a tecla Meus documentos a pasta home, mídia ao mplayer, e-mail ao thunderbird e a tecla web/inicial ao firefox. Mas não consegui todas, as teclas minhas imagens e minhas músicas nao dão sinal de vida. Sabe alguma coisa sobre isso? Flavio

[15] Comentário enviado por tecnicodiegorato em 11/06/2009 - 23:36h

A dica do amigo foi muito boa, usei parte dela pra configurar meu teclado do meu Dell Inspirion 1100 no Zenwalk Linux 6.0

como o Zenwalk usa Xfce ao inves de KDE tive que criar os mapeamentos atraves do proprio painel do xfce em :

em menu / configuracoes / teclado / atalhos de aplicativos

com o biding ja configurado apenas fiz um atalho no xfce usando os comandos

Abaixar Volume
amixer -q set Master 3%- unmute

Aumentar Volume
amixer -q set Master 3%+ unmute

Ligar e Desligar o Mute
amixer -q set Master toggle


espero que ajude quem usa XFCE . :D




Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts