最近、ライトを切り替えるためにScrollLockが必要なバックライト付きキーボードを購入しました。私はすぐにいくつかの簡単なbashコマンドで回避できるいくつかの問題に遭遇しました this threadを参照してください。
要するに、この問題を修正したことがわかったコマンドは次のとおりです。
xset led named "Scroll Lock"
スクロールロックを有効にするには(そしてライトをオンにするには)、
xset -led named "Scroll Lock"
Scroll Lockを無効にして、ライトをオフにするには。
Scroll Lockキーイベントを受信して(Scroll Lock)機能がオフになっている場合に前者のコマンドを発行し、それ以外の場合は後者を発行する場合、どのようなオプションを使用できますか?あれは、
if(ScrollLockIsEnabled)
systemCommand('xset -led named "Scroll Lock");
else
systemCommand('xset led named "Scroll Lock"`);
または類似。
少なくとも、スクロールロックの最後の状態を保持できるようにする変数(可能な場合)を保持するある種のBashスクリプトを実行することを考えていました。次に、xbindkeys
(ユーザーが入力した主要なイベントに基づいてコマンドを発行する)を使用してこのスクリプトを実行できます。
同様の問題を検索した後、これを見つけました。 1歳なのでとにかく答えたほうがいいです。
質問のように、xset led named "Scroll Lock"
を使用すると、LEDが有効になり、xset -led named "Scroll Lock"
はキーボードのLEDが無効になります。 xset --help
を調べると、xset q
が現在のステータス情報を出力していることがわかります。
ターミナルのstdoutの切り捨てられたサンプルを次に示します。
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
文字列Scroll lock: off
は、スクロールロックがオフの場合にのみ出力に表示されるため、grepを使用してこの文字列を確認できます。 xset q | grep "Scroll Lock: off"
は私たちの目的には問題なく機能します。次に、シェルスクリプトで、null文字列がオンになっていることを確認できます。
#!/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
次に、必要に応じて、ウィンドウマネージャーまたはデスクトップ環境の構成を使用して、スクロールロックを押したときにこのスクリプトを実行します。
bashを使用するだけで、Uはこれを実行できます。これは、スクロールロックバックライトキーボードで使用します。ルートとして実行する必要があります
#!/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
これをルートcrontabで使用します
@reboot sh ~/sh/backlight.sh &