如何确定 RHEL 6.6 中 Num lock 或 Caps lock 是否打开?

如何确定 RHEL 6.6 中 Num lock 或 Caps lock 是否打开?

如果数字锁/大写锁打开/关闭,我的 Thinkpad T430 没有可见的指示器 有没有办法在打开/关闭时在屏幕上发出通知?

答案1

您可以尝试通过以下方式获取信息设定:

xset q | grep Caps

结果:

00: Caps Lock:   off    01: Num Lock:    on     02: Scroll Lock: off

但如果没有X你可以尝试知识库信息:

kbdinfo gkbled

结果:

scrolllock:off numlock:on capslock:off

编辑:
如果您想更改状态,xset可以检查以下内容回答

或者您可以使用更改状态xdo工具:

xdotool key Caps_Lock

对于屏幕通知程序,您可以检查关键蒙

您还可以尝试以下脚本:

#!/bin/bash
#lockkey.sh

sleep .2

case $1 in
    'num')
        mask=2
        key="Num"
        ;;
    'caps')
        mask=1
        key="Caps"
        ;;
esac

value="$(xset q | grep 'LED mask' | awk '{ print $NF }')"

if [ $(( 0x$value & 0x$mask )) == $mask ]
then
    output="$key Lock is on"
else
    output="$key Lock is off"
fi

notify-send "$output"

您可以复制脚本/usr/local/bin并绑定Caps以运行它:

/usr/local/bin/lockkey.sh caps

和/或Num作为:

/usr/local/bin/lockkey.sh num

答案2

T430 可能没有 CapsLock LED,但电源 LED 可以通过软件控制(使用 Linux 内核 4.2 进行测试),因此可以很好地滥用。首先将其添加到您的 /etc/rc.local 中:

echo kbd-capslock >/sys/class/leds/tpacpi::power/trigger
chmod 666 /sys/class/leds/tpacpi::power/brightness

第一行负责文本控制台,并且作为副作用,最初会关闭 LED。为了处理 X11,第二行允许普通用户控制 LED。然后保存这段代码

#!/bin/sh
sleep 0.1
if xset q | grep -q 'Caps Lock: *on'; then
    echo 255 >/sys/class/leds/tpacpi::power/brightness
else
    echo 0 >/sys/class/leds/tpacpi::power/brightness
fi

作为一些可执行脚本(例如 /usr/local/bin/capsled.sh),并在桌面设置中绑定 CapsLock 键来运行它。丑陋得要死,但可以用(用 XFCE4 测试)。有谁知道在 X11 下重新映射 LED 的更干净的方法吗?

答案3

CAPS_STATUS=`xset q | grep -i caps | cut -c 22-24`
#test on $CAPS_STATUS if its on or off 

相关内容