xbindkeys 不适用于 bash 脚本

xbindkeys 不适用于 bash 脚本

我在 bash 中编写了一个简单的脚本,用于在按下 CapsLock 时点亮 Fn 指示灯,因为我的 t450 上的 Caps 按钮没有自己的指示灯。因此,我必须在按下按键时执行此脚本,为此我尝试使用xbindkeys。在我的.xbindkeysrc文件中,我最初写道:

# Fn led button as Capslock led "sleep 0.1 && sudo bash ~/.scipts/Caps_to_Fn_led.sh" Caps_Lock 哪里Caps_to_Fn_led.sh

#!/bin/bash
state=$(xset -q | grep Caps | cut -c20-24)

if [ $state = "off" ]
then
    modprobe -r ec_sys
    modprobe ec_sys write_support=1
    echo -n -e "\x06" | sudo dd of="/sys/kernel/debug/ec/ec0/io" bs=1 seek=12 count=1 conv=notrunc 2> /dev/null
    modprobe -r ec_sys
else
    modprobe -r ec_sys
    modprobe ec_sys write_support=1
    echo -n -e "\x86" | sudo dd of="/sys/kernel/debug/ec/ec0/io" bs=1 seek=12 count=1 conv=notrunc 2> /dev/null
    modprobe -r ec_sys
fi

`

如果我使用其他按钮(Esc、Return),它会起作用,但使用 Caps_Loks 时则不起作用。当我按下 Capslock 时,它什么也不做,这很奇怪xbindkeys -k,所以问题可能就从这里开始。我尝试了其他名称0x42,例如 、 lock、 0xffe5 xmodmap,但什么也没做。我该如何解决?

答案1

xbindkeys我找到了无法识别密钥的原因CapsLock。原因是我的i3 config:上有这行代码bindsym --release Caps_Lock exec --no-startup-id <command>,无法正常 xbindkey工作。我明白了,然后它xbindkeys -n向我展示了:

*** Warning *** Please verify that there is not another program running which captures one of the keys captured by xbindkeys. It seems that there is a conflict, and xbindkeys can't grab all the keys defined in its configuration file.

经过一番研究,我终于找到了 i3 系列。

现在密钥已被捕获。

相关内容