terça-feira, 19 de junho de 2018

Teclado sem os LEDs exibindo o status atual das teclas CapsLock e NumLock

No Linux nas distros Ubuntu, Lubuntu e Xubuntu existe um plugin para exibir o status atual do teclado que é o indicator-keylock e que  provavelmente deve funcionar em outros sabores do Ubuntu, mas quem está utilizando uma outra distro não baseada no Ubuntu e utilizando um ambiente gráfico mais simples com openbox, fluxbox, lxde, IceWM e outros muitas vezes não existe um plugin para os mesmos e nem um programa específico para isto nestas distros então como ter a exibição do status atual das teclas CapsLock e NumLock ?

Uma solução paliativa, embora que não exiba o status permanente no painel como os plugins de status do teclado encontrado em grandes desktop mais completos e criar um script e associar este script as teclas CapsLock e NumLock que exibirá um popup exibindo o status atual por 2 segundos se está ligada ou desliga ao ser acionadas estas teclas.

Para teclados que não tem o led indicador se o CapsLock e o Numlock está ligado/desligado muito comum em teclados sem fio precisamos ter os seguintes pacotes instalados: xbindkeys, notify-send e numlockx.

Para a tecla CapsLock, criamos o script capslock com permissão x salvo em /usr/local/bin com o conteúdo abaixo:

#!/bin/bash
sleep 1
state=$(xset -q | grep Caps | awk '{print $4}')
if [ "$state" = "on" ]
then
notify-send -t 2000 --hint=int:transient:1 "Capslock :ON"
else
notify-send -t 2000 --hint=int:transient:1 "Capslock :OFF"
fi

Agora numa janela de terminal devemos usar o comando xbindkeys -k para obter o código e o nome da tecla, e copiar o resultado para o arquivo ~/.xbindkeysrc e substituir "NoCommand" pelo nome do script.

$ xbindkeys -k
Press combination of keys or/and click under the window.
You can use one of the two lines after "NoCommand"
in $HOME/.xbindkeysrc to bind a key.
"NoCommand"
    m:0x12 + c:66
    Mod2 + Caps_Lock



Dentro do arquivo ~/.xbindkeysrc é feita a associação da tecla CapsLock com o script capslock, devendo ficar conforme abaixo.

"capslock"
    m:0x12 + c:66
    Mod2 + Caps_Lock


Após salvar o arquivo é necessário matar o processo atual do xbindkeys e iniciar novamente para carregar a nova configuração.

Agora quando acionar somente a tecla CapsLock será sempre exibindo um popup de balão no topo da tela no lado direito, dizendo o estado atual se a mesma está sendo ligada ON ou desligada OFF sendo mostrado por 2 segundos e fechando automaticamente.

Tecla NumLock do teclado numérico

Crie o script numerolock com permissão x salvo em /usr/local/bin

Conteúdo do script:
#!/bin/bash
sleep 1
state=$(xset -q | grep Num | awk '{print $8}')
if [ "$state" = "on" ]
then
notify-send -t 2000 --hint=int:transient:1 "NumLock :ON"
else
notify-send -t 2000 --hint=int:transient:1 "NumLock :OFF"
fi

Use o comando xbindkeys -k numa janela de terminal para obter o código da tecla NumLock ao pressionar a mesma, copie o resultado para o arquivo ~/.xbindkeysrc e substituir "NoCommand" pelo nome do script.

$ xbindkeys -k
Press combination of keys or/and click under the window.
You can use one of the two lines after "NoCommand"
in $HOME/.xbindkeysrc to bind a key.
"NoCommand"
    m:0x30 + c:77
    Mod2+Mod3 + Num_Lock


Dentro do arquivo ~/.xbindkeysrc é feita a associação da tecla NumLock com o script numerolock, devendo ficar conforme abaixo.

"numerolock"
    m:0x30 + c:77
    Mod2+Mod3 + Num_Lock


Após salvar o arquivo é necessário matar o processo atual do xbindkeys e iniciar novamente para carregar a nova configuração.

Notas:
Não é a melhor solução, mas quebra um galho legal na falta de um plugin ou programa para esta finalidade no seu ambiente gráfico preferido.

Você deve colocar o comando  xbindkeys para ser executado automaticamente pelo seu ambiente gráfico assim que o mesmo for iniciado, onde você deverá saber onde configurar isto no seu ambiente gráfico.

Procedimento testado no Slackware 14.2 utilizando o desktop openbox com painel tint2 e um teclado sem fio da marca C3 Tech modelo K-W600 BK wireless com mouse wireless e adaptador usb nano sendo 100% compatível com o Linux. O referido teclado também foi utilizando no Xubuntu 12.10 32 bits e no Lubuntu 16.04 64 bits funcionando perfeito.

O código fonte do script foi obtido em https://ubuntuforums.org/showthread.php?t=1927545

Telas





Um comentário: