Como posso usar a tecla de bloqueio de rolagem para alternar a luz de fundo no meu teclado?

4

Eu comprei recentemente um teclado com luz de fundo que requer o Scroll Lock para acender as luzes. Eu rapidamente entrei em alguns problemas que podem ser resolvidos com alguns comandos bash simples - Veja este tópico.

Em suma, o comando que encontrei corrigiu esse problema foi:

xset led named "Scroll Lock"

Para ativar o Scroll Lock (e acender as luzes) e

xset -led named "Scroll Lock"

Para desativar o Scroll Lock e desligar as luzes.

Quais opções estão disponíveis se eu quiser emitir o comando anterior se um evento da tecla Scroll Lock for recebido e a função (Scroll Lock) estiver desativada e a última no outro caso? Isto é,

if(ScrollLockIsEnabled)
    systemCommand('xset -led named "Scroll Lock");
else
    systemCommand('xset led named "Scroll Lock"');

Ou similar.

Eu estava pensando, no mínimo, talvez fazendo algum tipo de script Bash que mantivesse uma variável (se possível) que me permitisse manter o último estado do Scroll Lock. Eu poderia então executar esse script usando xbindkeys (que emite comandos com base em eventos-chave inseridos pelo usuário).

    
por sherrellbc 26.10.2014 / 01:14

2 respostas

4

Encontrei isso depois de procurar por um problema semelhante. Desde que é um ano velho eu poderia também responder de qualquer maneira.

Como na pergunta se você usa xset led named "Scroll Lock" , ele habilitará leds e xset -led named "Scroll Lock" desativará os leds do teclado. Se você examinar o xset --help menciona que xset q imprime as informações de status atual.

Aqui está uma amostra truncada do stdout no terminal:

Keyboard Control:
  auto repeat:  on    key click percent:  0    LED mask:  00000002
  XKB indicators:
    00: Caps Lock:   off    01: Num Lock:    on     02: Scroll Lock: off
    03: Compose:     off    04: Kana:        off    05: Sleep:       off
    06: Suspend:     off    07: Mute:        off    08: Misc:        off
    09: Mail:        off    10: Charging:    off    11: Shift Lock:  off
    12: Group 2:     off    13: Mouse Keys:  off

A string Scroll lock: off só estará presente na saída se e somente se o Scroll Lock estiver desligado, então podemos usar o grep para verificar esta string. xset q | grep "Scroll Lock: off" funciona muito bem para nossos propósitos. Então, em um script de shell, podemos verificar a string nula para ver quando ela está ativa.

#!/bin/sh

result=$(xset q | grep "Scroll Lock: off")
if [ -z "$result" ]; then # Scroll Lock must be on
  echo "Off"
  xset -led named "Scroll Lock"
else
  echo "On"
  xset led named "Scroll Lock"
fi

Então, se você quiser, basta usar o gerenciador de janelas ou a configuração do ambiente de área de trabalho para executar esse script quando pressionar o controle de rolagem.

    
por 20.12.2015 / 07:33
1

usando apenas bash, U pode fazer isso, eu uso isso em um teclado com scroll de retroiluminação. deve ser executado como root

#!/usr/bin/env bash
if [[ $EUID -ne 0 ]]; then
    echo "this program requires root user" 2>&1
    exit 1
fi

dir1=$(find /sys/devices/ -name brightness | grep scrolllock)
while :
do
    var1='cat $dir1'
    if [ $var1 == 0 ] ; then
        echo 1 > $dir1
    fi
    sleep 5
done

Eu uso isso no root crontab

@reboot sh ~/sh/backlight.sh &
    
por 14.01.2017 / 05:51