XmodMap-pt-BR

english version Lkraider/XmodMap

Xmodmap & Compiz

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: bash:~$ gksudo 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.
  2. Inicializamos o novo modificador no início do arquivo:

    clear Mod1
    clear Mod2
    clear Mod3
  3. 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: bash:~$ xmodmap /usr/share/xmodmap/xmodmap.br

Para verificar o resultado da nossa modificação, execute: bash:~$ 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
(ambos em inglês)

v.1.4

Lkraider/XmodMap-pt-BR (last edited 2008-08-06 17:00:49 by localhost)