如何使用滚动锁定键来切换键盘上的背光?

she*_*lbc 5 arch-linux keyboard-shortcuts

我最近购买了一个背光键盘,需要滚动锁定来切换灯光。我很快遇到了一些问题,可以通过一些简单的 bash 命令来解决 - 请参阅线程。

简而言之,我发现解决此问题的命令是:

xset led named "Scroll Lock"
Run Code Online (Sandbox Code Playgroud)

启用 Scroll Lock(并打开灯),并且

xset -led named "Scroll Lock"
Run Code Online (Sandbox Code Playgroud)

禁用 Scroll Lock 并关闭灯。

如果我想在收到 Scroll Lock 键事件且 (Scroll Lock) 功能关闭时发出前一个命令,而在其他情况下发出后者,可以使用哪些选项?那是,

if(ScrollLockIsEnabled)
    systemCommand('xset -led named "Scroll Lock");
else
    systemCommand('xset led named "Scroll Lock"`);
Run Code Online (Sandbox Code Playgroud)

或者类似的。

我在想,至少,也许做某种 Bash 脚本来保存一个变量(如果可能的话),让我保留 Scroll Lock 的最后状态。然后我可以使用xbindkeys(根据用户输入的关键事件发出命令)执行此脚本。

小智 3

搜索类似问题后发现了这个。既然已经一年了,我还是回答一下吧。

正如问题中,如果您使用xset led named "Scroll Lock"它,它将启用 LED 并xset -led named "Scroll Lock"禁用键盘 LED。如果您检查它xset --help提到xset q打印出当前状态信息。

以下是终端中标准输出的截断示例:

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
Run Code Online (Sandbox Code Playgroud)

Scroll lock: off当且仅当 Scroll Lock 关闭时, 该字符串才会出现在输出中,因此我们可以使用 grep 来检查该字符串。xset q | grep "Scroll Lock: off"对于我们的目的来说效果很好。然后,在 shell 脚本中,我们可以检查空字符串以查看它何时打开。

#!/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
Run Code Online (Sandbox Code Playgroud)

然后,如果您愿意,只需在按下滚动锁定时使用窗口管理器或桌面环境配置来执行此脚本。