Alterar mapeamento de teclas da extensão Media Keys do Firefox

Publicado por Eduardo Mozart de Oliveira em 03/11/2017

[ Hits: 7.024 ]

Blog: http://www.eduardomozartdeoliveira.wordpress.com/

 


Alterar mapeamento de teclas da extensão Media Keys do Firefox



Recentemente, tive de alterar meu navegador padrão do Google Chrome para o Mozilla Firefox devido a problemas de compatibilidade com o plugin Warsaw, do Banco do Brasil, com o Google Chrome.

Após a importação dos Favoritos do Google Chrome e instalação do FXChrome (tema do Google Chrome para o Firefox), senti falta do plugin "Deezer Control", disponível na Chrome Web Store, que permite mapear teclas de atalho para tocar, pausar e trocar faixas de música do Deezer (serviço de streaming de música similar ao Spotify). A única extensão que possui a mesma funcionalidade específica para o Firefox é o Deezer Media Keys, porém, ela está disponível apenas para Windows. No passado, tentei adotar o "Nuvola Player 3", que possui suporte ao Deezer, integração com o Desktop e mapeamento de teclas, porém, ele apresentava lentidão a cada troca de música.

Logo após a instalação da extensão "Media Keys" no Firefox, a seguinte mensagem de erro foi exibida:

It is most likely that this key combination is already in use by another application. Find that app, and make it release this hotkey. Possibly could be in use by the "Global Keyboard Shortcuts" of the system - http://i.imgur.com/cLz1fDs.png

Details: Was not able to register the code_os of 172 on grabwin of 238. Other info: grabwins: 238 codes_os: 172,208,215 code: 269025044

Offending Hotkey Combination: Media Key: Play (Capslock:Off, Numlock:Off)
O link do Imgur redireciona a uma imagem da configuração de atalhos de teclado no Ubuntu. Ao verificar o mapeamento de atalhos de teclado no Deepin (Central de Controle > Teclado > Atalhos), não pude encontrar atalhos mapeados a teclas multimídia.

Pesquisando na Internet, pude encontrar um post no Arch Linux Forums relacionado ao mapeamento de "Multimedia Keys" no Desktop Environment (DE) do Deepin. [4] De fato, o mapeamento de teclas de função ("Fn") depende dos desenvolvedores do DE incluírem a funcionalidade da tecla em seus ambientes [5], o que explica o por quê das teclas multimídia funcionarem normalmente em algumas distribuições Linux (como Arch Linux) e em outras não (CentOS) [6].

Aparentemente, o Deepin realiza o registro de "Multimedia Keys" através do //schema// com.deepin.wrap.gnome.settings-daemon.plugins.media-keys do dconf [7].
Na captura de tela acima, foram destacados os mapeamentos das teclas "Multimedia Keys" do Deepin visualizados através do "dconf-editor". Quando a extensão "Media Keys" tenta realizar o mapeamento das teclas destacadas acima, ela falha ao mapeá-las devido a encontrá-las atualmente mapeadas pelo sistema operacional [6].

Ainda que o mapeamento de "Multimedia Keys" possa ser alterado através do "dconf-editor", a alteração não surgiu nenhum efeito (mesmo após realizar logoff) e as teclas continuaram mapeadas pelo Deepin, impedindo o mapeamento das teclas pela extensão "Media Keys" do Firefox.

Porém, pelo menos no meu caso, o Deepin aparenta mapear as teclas multimídia de "Play", "Next" e "Previous" a lugar nenhum, por que elas não são identificadas nem mesmo por aplicativos nativos (como o "Deepin Movie", que permite o remapeamento de teclas na própria interface do programa).

Teclado do Notebook HP ProBook 4430S
Ao tentar mapear a tecla "Play" [F11 no meu teclado], através da combinação "Fn" + "F11", o programa não identificou o a tecla multimídia "Play". Ele permitiu apenas o mapeamento da tecla "F11" (sem pressionar "Fn"), o que significa que a tecla está, de fato, funcionando.

Pude encontrar apenas um caso reportado na Internet sobre falhas no funcionamento de teclas "Fn/Multimedia Keys" na comunidade Ask Ubuntu relacionado a um notebook HP modelo ProBook 4540S [3] (um notebook similar ao meu), porém, acredito que a falha no mapeamento de teclas multimídia neste caso não esteja relacionado a versão do Kernel (conforme comentado no Ask Ubuntu) devido a outras teclas "Fn" como ajuste de som e luminosidade da tela funcionarem normalmente, mas sim a interface do Deepin (Desktop Environment) não mapear corretamente as teclas multimídia ("Multimedia Keys") [5].

Infelizmente, a extensão "Media Keys" não possui uma interface gráfica para alteração dos mapeamentos de teclas, utilizando "Multimedia Keys" do teclado por padrão. Como o Deepin impedia o uso destas teclas, isso inviabilizava o uso da extensão. Porém, pude realizar o mapeamento de teclas manualmente alterando o código-fonte da extensão para utilizar, ao invés das teclas de função de multimídia, a combinação de teclas "F10", "F11" e "F12" (conforme destacadas na imagem do teclado acima). Na prática, a extensão passou a funcionar como "Multimedia Keys", sem a necessidade de pressionar a tecla "Fn" para ativá-las.

Para modificar o código-fonte da extensão para alterar o mapeamento de teclas da mesma, faça o seguinte:

1. Realize a instalação da extensão Media Keys no Firefox.

1. Após a instalação da extensão, abra o explorador de arquivos e vá para o diretório "/home/[usuário]/.mozilla/firefox/[id].default/extensions".

Cada profile possui uma identificação única (como "yjgur1eb") para diferenciar múltiplos perfis do Firefox (possuir múltiplos perfis é útil quando possuímos múltiplas versões do Firefox instaladas no mesmo computador).

Por padrão, a visualização de arquivos/diretórios ocultos é desabilitada por padrão pela maioria dos exploradores de arquivo. Para visualizar o diretório ".mozilla", pode ser necessário habilitar a visualização de arquivos ocultos na configuração do explorador de arquivos ou acessar o diretório digitando o endereço diretamente na barra de endereços do explorador de arquivos - "/home/[usuário]/.mozilla".

No Deepin, é possível abrir o explorador de arquivos em um diretório específico com o comando:

dde-file-manager /home/[usuário]/.mozilla

Outros exploradores de arquivos, como o Nautilus, possuem a mesma funcionalidade:

nautilus /home/[usuário]/.mozilla

3. No diretório de extensões, altere a extensão do arquivo "jid1-4GP7z3tkUd3Tzg@jetpack.xpi" (extensão "Media Keys") para "jid1-4GP7z3tkUd3Tzg@jetpack.zip". Após a alteração da extensão, dê botão direito no arquivo ZIP e selecione "Extrair aqui".
A imagem acima exibe a extensão extraída. Ao abrir o Firefox, ele automaticamente excluirá o arquivo *.zip da extensão, mantendo apenas o diretório "jid1-4GP7z3tkUd3Tzg@jetpack". O Firefox passará a carregar a extensão "Media Keys" através do diretório extraído. É possível confirmar que a extensão continua disponível no Firefox acessando o menu "Ferramentas > Extensões".
4. Para alterar o mapeamento de teclas da extensão, abra o diretório extraído e modifique o arquivo "MainWorker.js" no subdiretório "lib" entre as linhas 164-287 [1] utilizando o editor de arquivos de texto de sua preferência.
Eu recomendo utilizar a função "Localizar e substituir" do seu editor para substituir cada ocorrência da tecla multimídia no arquivo "MainWorker.js" (existem 4 ocorrências). Na imagem acima, substitui os mapeamentos padrões "XF86AudioPlay" e "XF86AudioStop" (tecla "Play/Stop") por "XK_F11", "XF86AudioPrev" por "XK_F10" e "XF86AudioNext" por "XK_F12".

Possíveis valores são listados no arquivo "ostypes_x11.jsm" no subdiretório "lib/ostypes" entre as linhas 1057-1505.
Por exemplo, para substituir a tecla multimídia "XF86AudioPlay" pela tecla "a" minúscula, basta alterar o arquivo "MainWorker.js" para "XK_a".

Após a alteração do mapeamento, é necessário reiniciar o Firefox para aplicar as alterações.

Conclusão

Torço para que o meu caso tenha sido um fato isolado, e que a alteração do mapeamento da extensão "Media Keys" não seja necessário em todos os casos. Caso desejar, você pode desabilitar a instalação de atualizações automáticas da extensão em "Ferramentas > Extensões > Media Keys > Preferências > Atualização automática", caso queira evitar que uma atualização restaure o mapeamento de teclas.

Atualmente, a extensão "Media Keys" é considerada "Legada" devido a migração da API de Add-ons do Mozilla Firefox para WebExtensions (mesma API do Google Chrome), permitindo a interoperabilidade entre extensões do Google Chrome e Firefox (ou seja, será possível instalar extensões do Google Chrome no Firefox). À partir da versão 57, não será possível instalar extensões legadas do Mozilla Firefox em novas versões do navegador, incluindo a "Media Keys". Porém, o autor da extensão já anunciou o desenvolvimento da extensão em WebExtension [8], porém, no momento desta publicação, ainda não a disponibilizou ao público.

Talvez no futuro próximo a extensão possua a possibilidade de alteração do mapeamento de teclas através da interface gráfica do Firefox, porém, esta funcionalidade não está disponível na versão atual da extensão. É possível editar o arquivo "package.json" para adicionar esta funcionalidade na extensão atual, porém, devido a migração da extensão para WebExtension, é melhor aguardar o lançamento oficial da mesma para tornar esta funcionalidade disponível na nova versão.

Referências

1. Hotkey registration failed in 1.0.0. Github. Disponível em: <https://github.com/carlin-q-scott/browser-media-keys/issues/96>. Acesso em: 20/10/2017

2. Editing an add-on to change its compatibility. mozillaZine. Disponível em: <http://kb.mozillazine.org/Editing_an_add-on_to_change_its_compatibility>. Acesso em: 20/10/2017.

3. Multimedia keys are not working with my HP Probook 4540s. Ask Ubuntu. Disponível em: <https://askubuntu.com/questions/321687/multimedia-keys-are-not-working-with-my-hp-probook-4540s>. Acesso em: 20/10/2017.

4. Keyboard Media Key shortcuts in Deepin DE. Arch Linux Forums. Disponível em: <https://bbs.archlinux.org/viewtopic.php?id=228911>. Acesso em: 20/10/2017.

5. Meaning of the output of “xev”. Ask Ubuntu. Disponível em: <https://askubuntu.com/questions/673342/meaning-of-the-output-of-xev>. Acesso em: 20/10/2017.

6. XF86AudioPause doesn't seem to be caught. GitHub. Disponível em: <https://github.com/carlin-q-scott/browser-media-keys/issues/135>. Acesso em: 20/10/2017.

7. How to disable volume up/down key bindings?. Deepin Community Discussion. Disponível em: <https://bbs.deepin.org/forum.php?mod=viewthread&tid=131374>. Acesso em: 20/10/2017.

8. WebExtension support. GitHub. Disponível em: <https://github.com/carlin-q-scott/browser-media-keys/issues/150>. Acesso em: 20/10/2017.

Outras dicas deste autor

Como lidar com arquivos de imagem .WIM

Downgrade de versões do Wine e LibreOffice instaladas à partir de repositórios PPA no Ubuntu 14.04 LTS

Erro - apt-get no Ubuntu: ** (appstreamcli): CRITICAL **: Error while moving old database out of the way. AppStream cache update failed [Resolvido]

Como restaurar o tema padrão do Ubuntu

Adicionando memória virtual (SWAP) temporária no GNU/Linux

Leitura recomendada

Executar shutdown como usuário comum em 2 etapas

Iniciando Debian 8 em modo texto (bem simples)

Ubuntu mais rápido com /tmp na memória RAM

XFCE tentando iniciar o Nautilus?

xsession: Warning: unable to write to /tmp [Resolvido]

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts