web-dev-qa-db-ja.com

xbindkeysがbashスクリプトで機能しない

私のt450のcapsボタンには独自のledがないため、CapsLockが押されたときにFn ledを点灯するための単純なスクリプトをbashで記述しました。したがって、キーを押すだけでこのスクリプトを実行する必要があります。このため、xbindkeysを使用しようとしています。私の.xbindkeysrcファイルで私は最初に書きました:

# Fn led button as Capslock led "sleep 0.1 && Sudo bash ~/.scipts/Caps_to_Fn_led.sh" Caps_LockCaps_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が何もしないことも奇妙なので、問題はここから始まるかもしれません。0x42lockxmodmapの0xffe5などの他の名前を試しましたが、何もしませんでした。どうすれば解決できますか?

1
linofex

xbindkeysCapsLockキーを認識しない理由を見つけました。その理由は、この行がi3 configbindsym --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ラインを見つけました。

これで鍵が取得されました。

1
linofex