XmodMap

Revision 1 as of 2006-03-09 01:42:46

Clear message

Depois de me debater um pouco (bastante) pra conseguir fazer funcionar as teclas Win do teclado com o Compiz, acabei aprendendo como funciona o formato do tal do xmodmap.

Segue aqui uma breve explicação e exemplo de como editar o arquivo xmodmap.seuteclado para habilitar as teclas Win como Super:


Inicialmente, você deve descobrir qual o código da tecla você quer alterar, chamado keycode. Para isso, um programa muito útil é o xev. Execute-o em um terminal e uma pequena janela aparecerá. No terminal, diversas informações serão mostradas quando você pressiona alguma tecla. Tente pressionar a tecla Win da esquerda, o resultado será parecido com isso: {{{KeyPress event, serial 30, synthetic NO, window 0x2e00001,

  • root 0x52, subw 0x0, time 3698176719, (596,523), root:(610,593), state 0x0, keycode 115 (keysym 0xffeb, Super_L), same_screen YES, XLookupString gives 0 bytes:

    XmbLookupString gives 0 bytes: XFilterEvent returns: False}}}

Note que o keycode é o número 115. Para a tecla Win da direita, o keycode será 116.

Munidos desta informação, podemos agora editar o arquivo xmodmap correspondente ao nosso teclado. Os layouts disponíveis no Ubuntu estão localizados na pasta /usr/share/xmodmap. Exemplo: sudo gedit /usr/share/xmodmap/xmodmap.br

Dando uma olhada no arquivo, percebemos logo que ele serve para ligar um keycode de uma tecla com o que realmente aquela tecla deve fazer no sistema. Queremos alterar a função das teclas Win, cujo keycode, como sabemos agora, é 115 e 116, então vamos para as linhas correspondentes. Exemplo: {{{keycode 115 = Select keycode 116 = Mode_switch}}}

Queremos que elas sejam interpretadas como teclas Super, então editamos para ficar assim: {{{keycode 115 = Super_L keycode 116 = Super_R}}}

Ou seja, Super_L corresponde à tecla Super esquerda e Super_R à tecla Super da direita (L de Left e R de Right, claro).

Mas espere, ainda não terminamos, e é aqui que muitos (leia-se EU) se confundem. A função Super é uma função especial, chamada modificadora, e é preciso avisar que iremos usá-la. Para isso, o xmodmap nos dá suporte para oito modificadores, sendo eles:

Shift

Control

Lock

Mod1

Mod2

Mod3

Mod4

Mod5

Deles, cinco são de livre uso, adivinhe quais! heh

Okay, então, como avisamos ao xmodmap que estamos usando as teclas Super? Simples! :

  1. Primeiro, vemos quais modificadores já estão sendo usados. Exemplo: {{{add Mod1 = Alt_L

add Mod2 = Mode_switch}}}. Vamos usar um novo modificador livre, neste caso Mod3.

  1. Inicializamos o novo modificador no início do arquivo: {{{clear Mod1

clear Mod2 clear Mod3}}}

  1. E no final do arquivo especificamos que estamos usando as teclas Super: add Mod3 = Super_L Super_R

Muito bem, serviço feito, agora salvamos o arquivo e dizemos para o xmodmap carregar nossas novas configurações. No terminal, digitamos: xmodmap /usr/share/xmodmap/xmodmap.br

Para verificar o resultado da nossa modificação, execute: xmodmap sem argumentos. Deve mostrar algo assim: {{{shift Shift_L (0x32), Shift_R (0x3e) lock Caps_Lock (0x42) control Control_L (0x25), Control_R (0x6d) mod1 Alt_L (0x40), Meta_L (0x9c) mod2 Mode_switch (0x71) mod3 Super_L (0x73) Super_R (0x74) mod4 mod5}}}

Experimente usar os atalhos do Compiz definidos com a tag <Super> agora!

Para que suas alterações sejam usadas sempre, coloque um script pra carregar seu xmodmap toda vez que iniciar uma sessão no Gnome (pode ser no mesmo script que carrega o Compiz, como mostrado nos tutoriais sobre o assunto).

Para mais informações, visite: http://www.in-ulm.de/~mascheck/X11/xmodmap.html - Bastante informativo http://paste.lisp.org/display/1995 - Exemplos interessantes