Teclado Multimídia do Acer Aspire no Linux

Saudações pessoas legais (que usam Linux).

Há algum tempo eu postei aqui um artigo sobre como fazer o Teclado Multimídia do Acer Aspire funcionar no MS Windows. Se você quer mais detalhes introdutórios sobre o que é Synaptics, Acer Media keys, Media Touch, MediaPad ou ainda LuxPad, você deveria ler o post anterior a este.

Já este post aqui, em específico, é sobre como colocar o teclado multimídia do Acer Aspire 5920  pra funcionar no Linux (testei no Ubuntu 10.04 64bits). Provavelmente, essa dica deve funcionar para outros Acer Aspire, mas talvez não funcione para outras distribuições Linux que não o Ubuntu.

Vou especificar os passos que segui aqui (mais ou menos: foram muitas tentativas e erros). Gostaria que, se funcionasse, vocês me informassem qual foi a sequência de passos, e tal, para aperfeiçoarmos cada vez mais essa dica.

Vamos a eles:

1. Ativar o touchpad

Antes de mais nada, é necessário ativar o mouse pad do seu notebook. No Acer Aspire, normalmente é só apertar FN + F7. Isso porque o “teclado” multimídia é na verdade um mouse. E quando desativamos o mouse pad do notebook, desativamos também o teclado multimídia.

Ativou? Mexe aí com o dedo pra ver… pronto? Vamos ao próximo passo então.

2. Instalando as aplicações

Como eu disse, o teclado multimídia é um mouse. E por padrão, é reconhecido como tal. Se você quiser testar, às vezes quando apertamos o play e o stop sobre uma página de internet, por exemplo, podemos ver a barra de rolagem indo pra cima e pra baixo: isso porque o play e o stop são reconhecidos, inicialmente, como “a rodinha do mouse”.

O que vamos fazer basicamente é o seguinte: usar três programinhas: o xinput, o xvkbd (virtual keyboard for X window system) e o xbindkeys, que irão “remapear” as funções desse “segundo mouse” (o teclado multimídia) para as funções corretas (à sua escolha). Nesse artigo, essa “escolha” será a mais óbvia: vamos remapeá-los para funcionar como teclas multimídias mesmo.

O xinput (provavelmente) já está instalado no seu Linux.

Já os demais, se você ainda não os têm instalado, basta digitar no terminal:

sudo apt-get install xbindkeys xvkbd

Pronto. Falta configurá-los agora.

3. Descobrindo o teclado multimídia

Para configurar os nossos programas, precisamos antes descobrir qual é o ID (o número identificador) do nosso teclado multimídia. Para isso, iremos utilizar o comando xinput, dessa forma:

xinput list

A saída deveria ser algo como isso:

maverick@MaveBOOKLinux:~$ xinput list
⎡ Virtual core pointer                         id=2     [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer               id=4     [slave  pointer  (2)]
⎜   ↳ USB+PS/2 Optical Mouse                   id=11    [slave  pointer  (2)]
⎜   ↳ Macintosh mouse button emulation         id=17    [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad               id=16    [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad               id=15    [slave  pointer  (2)]
⎣ Virtual core keyboard                        id=3     [master keyboard (2)]
 ↳ Virtual core XTEST keyboard                 id=5     [slave  keyboard (3)]
 ↳ Power Button                                id=6     [slave  keyboard (3)]
 ↳ Video Bus                                   id=7     [slave  keyboard (3)]
 ↳ Power Button                                id=8     [slave  keyboard (3)]
 ↳ Sleep Button                                id=9     [slave  keyboard (3)]
 ↳ Acer CrystalEye webcam                      id=10    [slave  keyboard (3)]

Logo no início, podemos notar duas linhas (destacadas):

SynPS/2 Synaptics TouchPad               id=16
SynPS/2 Synaptics TouchPad               id=15

Um desses é o mouse pad. O outro é o teclado multimídia. Na frente de cada um, vemos o ID. O número desse ID é o que precisamos para configurarmos os programinhas. Mas falta saber: qual dos dois é o teclado multimídia então?

Para descobrirmos isso, iremos pedir mais detalhes ao xinput, utilizando o comando:

xinput list

onde o é o número identificado do dispositivo sobre o qual queremos ter mais informações.

Dessa forma, para o ID=15:

maverick@MaveBOOKLinux:~$ xinput list 15
SynPS/2 Synaptics TouchPad                  id=15    [slave  pointer  (2)]
 Reporting 3 classes:
 Class originated from: 15
 Buttons supported: 12
 Button labels: Button Left Button Middle Button Right Button Wheel Up Button Wheel Down Button Horiz Wheel Left Button Horiz Wheel Right None None None None None
 Button state:
 Class originated from: 15
 Detail for Valuator 0:
 Label: Rel X
 Range: 1472.000000 - 5472.000000
 Resolution: 1000 units/m
 Mode: relative
 Class originated from: 15
 Detail for Valuator 1:
 Label: Rel Y
 Range: 1408.000000 - 4448.000000
 Resolution: 1000 units/m
 Mode: relative

E para o ID=16:

maverick@MaveBOOKLinux:~$ xinput list 16
SynPS/2 Synaptics TouchPad                  id=16    [slave  pointer  (2)]
 Reporting 3 classes:
 Class originated from: 16
 Buttons supported: 12
 Button labels: Button Left Button Middle Button Right Button Wheel Up Button Wheel Down Button Horiz Wheel Left Button Horiz Wheel Right None None None None None
 Button state:
 Class originated from: 16
 Detail for Valuator 0:
 Label: Rel X
 Range: 1472.000000 - 5472.000000
 Resolution: 59000 units/m
 Mode: relative
 Class originated from: 16
 Detail for Valuator 1:
 Label: Rel Y
 Range: 1408.000000 - 4448.000000
 Resolution: 109000 units/m
 Mode: relative

Agora, para saber qual é o teclado multimídia, basta observar a linha “Resolution“. O teclado multimídia é o que possui menor resolução. Nesse caso, podemos concluir que o ID do meu teclado multimídia é o 15.

Se você quiser testar, utilize o comando

xinput test ID

Por exemplo, vou testar se meu teclado multimídia está funcionando e se é o ID 15 mesmo:

maverick@MaveBOOKLinux:~$ xinput test 15
button press   4
button release 4
button press   5
button release 5
button press   6
button release 6
button press   7
button release 7
^C

Eu pressionei os quatos botões azuis do teclado multimídia e obtive esse resultado acima. Ou seja, tudo funcionando. Se eu fizer o mesmo para o ID 16 vou notar que os mesmos botões, ou seja, o 4, 5, 6, etc, estão mapeados tanto para o teclado multimídia quanto para o mouse pad. Por isso, quando apertamos o play, por exemplo, a barra de rolagem é deslizada pra cima, pois o botão 5 é a “rodinha do mouse pra cima”.

É justamente isso que tentaremos mudar.

4. Configurando os programinhas

Agora que já sabemos que o ID 15 é o meu teclado multimídia e que o ID 16 é o meu mouse pad, iremos remapear os botões do teclado multimídia para botões “virtuais”, que ninguém mais estará usando. Os mouses normalmente possuem no máximo 16 botões. Por isso, vamos utilizar os botões números 17, 18, 19 e 20 para garantir que nenhum mouse tente utilizá-los. Ou seja, quando eu apertar o play, quero que o Linux ache que apertei o botão 17 ou invés do 4 (uma vez que o 4 já está sendo mapeado pra rodinha do mouse). Entendido?

Para fazer isso, utilizaremos o comando xinput novamente, dessa forma:

xinput set-button-map <ID> <botão 1> <botão 2> <botão 3> ...

Ou seja, mapear os botões do dispositivo , de forma que o botão <1> seja isso, que o <2> seja aquilo, etc. Na prática, fica assim:

maverick@MaveBOOKLinux:~$ xinput set-button-map 15 0 0 0 17 18 19 20 21 0 0 0 0 0 0 0 0

Quando coloco 0 (zero) na posição do botão <1>, por exemplo, quero dizer que esse botão está desativado. Quando coloco 17 no lugar do botão <4>, por exemplo, quero dizer que a partir de agora o botão <4> vai passar a ser o botão 17.

Para testar, podemos utilizar o “xinput test” novamente, assim:

maverick@MaveBOOKLinux:~$ xinput test 15
button press   17
button release 17
button press   18
button release 18
button press   19
button release 19
button press   20
button release 20

Eu apertei os mesmos botões que no último teste, na mesma sequência. Só que agora o número do botão está diferente. Antes, quando eu apertava o play, aparecia “button press 4”. Agora, apareceu “button press 17”.

Pronto, já temos o teclado multimídia com botões próprios. Agora vamos associar a esses novos botões as ações multimídias. Essa é a tarefa do xbindkeys e do xvkbd.

Para configurar o xbindkeys precisamos criar um arquivo chamado “.xbindkeysrc” e colocá-lo no nosso diretório home. No Ubuntu podemos fazer isso facilmente através do comando:

maverick@MaveBOOKLinux:~$ gedit ~/.xbindkeysrc

Agora é só colar esse conteúdo no seu arquivo .xbindkeysrc:

"xvkbd -text "\[XF86AudioPlay]""
 b:17
"xvkbd -text "\[XF86AudioStop]""
 b:18:
"xvkbd -text "\[XF86AudioPrev]""
 b:19
"xvkbd -text "\[XF86AudioNext]""
 b:20

Agora é só salvar o arquivo e pronto.

Mas o que essas configurações querem dizer? Simples: elas dizem para o xbindkeys que, quando eu apertar o botão 17 (b:17) ele deve executar o comando “xvkbd”, ou seja, o teclado virtual, e simular que eu apertei a tecla “\[XF86AudioPlay]”, que é justamente a tecla multimídia play. E faz assim para os demais botões.

Note que no lugar do “xvkbd -text “\[XF86AudioPlay]”” eu poderia colocar QUALQUER comando do Linux. Então, se você quiser usar o botão play para desligar o computador, abrir o browser, ou qualquer outra coisa, basta modificar ali.

Por exemplo, se você quiser que seu teclado multimídia controle apenas o rythmbox, basta escrever no seu .xbindkeysrc:

"rhythmbox-client --play-pause"
b:17
"rhythmbox-client --no-start --pause"
b:18
"rhythmbox-client --no-start --previous"
b:19
"rhythmbox-client --no-start --next"
b:20

E pronto.

5. Como não ter que fazer isso toda vez que eu ligar o computador?

Sim, existe essa grande desvantagem: toda vez que desligamos o computador, perdemos a configuração do xinput. E quando ligamos, precisamos executar o comando

maverick@MaveBOOKLinux:~$ xinput set-button-map 15 0 0 0 17 18 19 20 21 0 0 0 0 0 0 0 0

novamente. Além de termos que iniciar o XBindKeys.

Mas, para não termos que fazer isso, basta utilizarmos os “Aplicativos de Sessão”.

Para isso, basta irmos no menu do Ubuntu (Gnome) em “Sistema” -> “Preferências” -> “Aplicativos de Sessão” e clicar em “Adicionar”. Na próxima tela, basta informar as seguintes opções (note que você deve adaptar essas opções para o seu computador):


Adicionando o xinput


Nome: Teclado Multimídia
Comando: xinput set-button-map 15 0 0 0 17 18 19 20 21 0 0 0 0 0 0 0 0

E agora, clicando em “Adicionar” novamente, vamos adicionar o XBindKeys, assim:


Adicionando o XBindKeys


Nome: XBindKeys
Comando: xbindkeys

E ok.

6. Problemas conhecidos

Provavelmente o ID do seu teclado multimídia será o 13.

Toda vez que eu coloco meu teclado USB (pra programar, o teclado do notebook não é muito bom), o ID do meu teclado multimídia muda de 13 pra 15. Isso faz com que os comandos que eu criei no aplicativos de sessão não funcionem mais. Mas como eu raramente uso o notebook sem meu teclado USB, isso não é um problema. Mas fica atento a isso.

7. Finalmente

Bom, espero que funcione pra vocês. Desculpa o post tão grande.

E até a próxima, se Deus quiser.

Fontes:

Sobre maverick