我在 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 系列。
现在密钥已被捕获。