私のZSHプロンプトの一部はCaps Lockインジケータです。
function Capslock(){
x=$(xset -q | grep Caps) 2> /dev/null || exit 0
x=${x:22:1}
if [[ $x == "n" ]]; then
echo ""
fi
}
POWERLEVEL9K_CUSTOM_CAPS="Capslock"
POWERLEVEL9K_CUSTOM_CAPS_BACKGROUND="red"
POWERLEVEL9K_CUSTOM_CAPS_FOREGROUND="white"
この問題に必要かどうかはわかりませんが、POWERLEVEL9kテーマでoh-my-zshを使用していることがわかります。
Caps Lockボタンを押したときにプロンプトを再描画したいと思います。可能ですか?
編集する:
ご回答ありがとうございます。どちらも機能します。私は両方の答えを受け入れる正しい方法を探しています。
ベストアンサー1
GNU / Linuxの場合は、ファイルのXセッションでインストールして実行できxbindkeys
ます~/.xbindkeysrc
。
"echo . > ~/.caps"
Caps_Lock
次に〜/.zshrcから:
exec {CAPS_MONITOR}< <(tail -f ~/.caps 2> /dev/null)
caps-monitor() {
if
read <&$CAPS_MONITOR # consume the input
then
zle -R # redraw the prompt
#zle -M "CapsLock pressed [$((++n))]" # uncomment to verify it works
else
zle -M "CapsLock handler dysfunctional, stopping the monitoring"
zle -F $CAPS_MONITOR
fi
}
zle -N caps-monitor
zle -wF $CAPS_MONITOR caps-monitor