私のブラウザにEmacsキーバインドを実装しようとしています。
現在、.xbindkeysrc
とこのコードがあります
"if [[ "$(xdotool getwindowfocus getwindowname)" =~ "Chrome" ]]; then xdotool key --window "$(xdotool getactivewindow)" Left; fi"
control+b
ctrl + b
を押すとキャレットが後退しますが、奇妙な後遺症があります。ターミナル(Gnomeターミナル)でctrl + b
を使用できなくなります。
なぜこれが起こるのかわからないのですが、特定のプログラムでxbindkeysがキーをブロックするのを防ぐ方法はありますか?
そうでない場合、これを回避する別の方法を考えますか?
前もって感謝します。
追記:
Gnome Terminal
だけでなく、rxvt
およびxterm
でもブロックされます。そして、条件部分を削除してタイプすると"xdotool key --window "$(xdotool getactivewindow)" Left"
control+b
ただ、コードが機能することを期待している場合、コードはターミナル(およびGedit)でもブロックされます。それは本当に私を混乱させます。
私もxmodmapを試しましたが、keysymsテーブルにコントロールキーが含まれていないため、不可能です。私はまだxbindkeys
とxdotool
を使用して機能させるようにしていますが、私を助けていただければ本当にありがたいです。
Waylandコンテキストで同じスクリプトを試行すると機能するため、問題はXorg関連しているようです。
あなたがこの質問に興味があるなら、ここに私が最終的にそれをする方法があります。
.xbindkeysrc
に直接条件部分を含めようとする代わりに、xbindkey
デーモンを実行または強制終了するのに十分な速さでループする別のスクリプトを作成しました
#!/usr/bin/sh
while true
do
if [[ "$(xdotool getwindowfocus getwindowname)" =~ "Chrome" ]]
then
xbindkeys 2>/dev/null
else
killall xbindkeys 2>/dev/null
fi
sleep 0.5
done
次に、.xbindkeysrc
にすべてのEmacsコードを記述します。
また、systemd
を使用して、起動時にスクリプトを実行します。
お役に立てば幸いです。