Teclado Devastator, Scroll Lock e I3WM

Autor: Jefferson 'Slackjeff' Rocha
Atualização: 28/03/2019

INÍCIO

Recentemente eu recebi de doação do amigo criptografico Ayr, um teclado Devastator CM-STORM da Cool Master.

Um teclado sem dúvidas lindo, macio e gostoso de usar. Porém enfrentei um problema muito chato no meu I3wm. Por ser um teclado que possui leds a iguinição dele funciona atráves do Scroll Lock.

E cada vez que eu apertava o Scroll Lock o teclado era bloqueado e eu não conseguia me locomover atráves das Áreas de trabalhos virtuais, com meu bind (windows). Ou seja, para conseguir trabalhar eu precisava usar o Led desligado.

Este problema não era notavel no Xfce e no Kde, mas no I3wm não tinha como continuar com a brincadeira.

Então comecei a pensar e bater a cabeça qual seria a melhor solução para resolver o meu problema. A primeira ideia foi remapear o teclado! Mas puto trabalho ein?

Então resolvi apelar para o Shell Script e com alguns passos eu consegui resolver meu problema temporáriamente.

Com uma receita simples de Achar a valor do Scroll Lock e criar um script, seu problema será resolvido!

Desativando o Scroll Lock

A primeira brincadeira é usar o comando xev, você ira precisar habilitar e desabilitar o Scroll Lock para conseguir ver qual o Valor/Value dele. Para isto envie a saída para um arquivo para ter melhor visibilidade.

Após isso vamos usar o grep para fazer a filtragem e o awk para pegar somente os campos que necessitamos.

$ xev > resultado
$ grep "Scroll" result | awk '{print $3,$4}'
keycode 78

Ou se preferir você pode pegar a saida sem cortes.

$ grep "Scroll" result
state 0x30, keycode 78 (keysym 0xff14, Scroll_Lock), same_screen YES,

Perceba que o Keycode do Scroll Lock é 78, vamos agora desabilitar o Scroll Lock, para não ter mais problemas com ele.

Para esta finalidade vamos usar o comando xmodmap, sua sintaxe é: xmodmap -e 'keycode <value>=<action>'.

Em <value> você utilizará o valor capturado com o comando xev, e após o sinal de = você deixará em branco.

$ xmodmap -v -e 'keycode 78='
! 1:  keycode 78=
        keycode 0x4e =
!
! executing work queue
!
        keycode 0x4e =

O Script Colorido

Para facilitar nossa vida eu criei um script a qual deverá ser executado no auto-start da interface gráfica! Para ambientes via TTY ou Não GUI, você necessitará de outra receita.

Na variável led_off perceba que o valor é 00000000. Este retorno da quando todos os leds do teclado estão desligados!

Se caso você necessite encontrar um outro tipo de retorno use o comando:

xset -q | grep "LED" | awk '{print $10}'

Se não você pode seguir.

$ cat led_devastator

#!/usr/bin/env bash
#==================HEADER============================================|
#AUTOR
# Jefferson Rocha
#
# Resolve o problema para ativar o led no teclado CM-DEVASTATOR
# Cooler Master Devastator - LED Gaming Keyboard 
#====================================================================|

#=======================VARIAVEIS

led_off='00000000'
key_code='78'

# Pegando LED Mask
LED_STATUS=$(xset -q | grep "LED" | awk '{print $10}')

# Desabilitando Scroll Lock
xmodmap -e 'keycode ${key_code}='

# Ligando
if [[ "$LED_STATUS" = "${led_off}" ]]; then
    xset led 3 # Ligando LED
else
    xset -led 3 # Desligando LED
fi

exit 0

Dê permissão de execução e envie o script para /usr/bin, para ter um acesso global.

# cp led_devastator /usr/bin/

Agora vamos adicionar no arquivo de configuração do i3, .config/i3/config presente na home do seu usuário o seguinte comando:

exec led_devastator

E pronto, agora seu teclado estara com o led ligado sem problemas. Basta reiniciar sua interface e ter o led colorindo sua vida.