[2024-feb-29] Sad news: Eric Layton aka Nocturnal Slacker aka vtel57 passed away on Feb 26th, shortly after hospitalization. He was one of our Wiki's most prominent admins. He will be missed.

Welcome to the Slackware Documentation Project

Teclado Devastator, Scroll Lock e I3WM

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.

#!/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 
#====================================================================|

#=======================VARS

led_off='00000000'
key_code='78'

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

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

# On
if [[ "$LED_STATUS" = "${led_off}" ]]; then
    xset led 3 # on LED
else
    xset -led 3 # off 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.

Fontes

 pt-br:howtos:misc:devastator_scroll_lock ()
Esta tradução é mais antiga que a página original e pode estar desatualizada. Veja o que foi mudado.