从命令行检查锁定键状态

从命令行检查锁定键状态

我想从命令行检查锁定键(例如 Caps Lock、Num Lock、Scroll Lock 等)的状态(开/关)。如何通过终端命令检查状态?

答案1

只需运行:

xset q

man xset

q       The q option gives you information on the current settings.

在输出的顶部,您将找到您的信息,如下所示:

Keyboard Control:
  auto repeat:  on    key click percent:  0    LED mask:  00000003
  XKB indicators:
    00: Caps Lock:   on     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

您可以使用grep以下方法获取具体结果:

$ xset -q | grep Caps
    00: Caps Lock:   off    01: Num Lock:    on     02: Scroll Lock: off 

答案2

xset可以使用以下sed命令:

xset -q | sed -n 's/^.*Caps Lock:\s*\(\S*\).*$/\1/p'

举个例子,假设你想检查大写锁定是否已启用,如果已启用则禁用它。为此你可以这样做:

caps_lock_status=$(xset -q | sed -n 's/^.*Caps Lock:\s*\(\S*\).*$/\1/p')
if [ $caps_lock_status == "on" ]; then
  echo "Caps lock on, turning off"
  xdotool key Caps_Lock
else
  echo "Caps lock already off"
fi

答案3

如果您不是在 X(“图形模式”)中,而是在终端中:

$ /usr/bin/setleds
Current default flags:  NumLock off   CapsLock off   ScrollLock off
Current flags:          NumLock off   CapsLock off   ScrollLock off
Current leds:           NumLock off   CapsLock off   ScrollLock off

类似地,如果您想知道终端的状态,但您不在其中(例如,您通过 SSH 进入):

setleds < /dev/tty1

由于 /dev/tty* 权限,您可能需要以 root 身份使用。

查看手册页更多信息(该命令甚至可以设置 LED,读取它们只是一个副作用)。

相关内容