Xbindkeys kullanma fikriniz kulağa hoş geliyor:
Gözlerinde farklı .xbindkeysrc
bir yeni keybinding ekleyin:
"app_specific_keys.sh"
Control+s
Bu, "app_specific_keys.sh"
tuşuna bastığınızda yürütülür ctrl+s
.
Şimdi betiği tanımlamanız gerekiyor. Etkin pencereyi ve şu anda odağı olan uygulamanın adını almalıdır:
xprop -id `xdotool getactivewindow` |awk '/WM_CLASS/{print $4}'
Bu hile yapar: aktif pencere için xdotool ister, sonra verilen kimliğe sahip pencerenin tüm özellikleri için xprop ister ve sonra çok ayrıntılı çıktıyı uygulamanın adına (aslında kendi sınıfına) indirir. Eğer bunu bir gnome terminalinde çalıştırırsanız,
"Gnome-terminal"
Şimdi uygulamalarınız için eylemler tanımlamanız gerekir:
if [ $N = '"Gnome-terminal"' ]; then
xdotool key --clearmodifiers ctrl+s
else
xdotool key --clearmodifiers ctrl+d
fi
Yani birlikte, senaryo "app_specific_keys.sh"
şöyle görünebilir:
#!/bin/bash
W=`xdotool getactivewindow`
S1=`xprop -id ${W} |awk '/WM_CLASS/{print $4}'`
S2='"Gnome-terminal"'
if [ $S1 = $S2 ]; then
xdotool key --clearmodifiers ctrl+d
else
xdotool key --clearmodifiers ctrl+s
fi
Bu gerektiğini çalışır, ancak olduğu gibi bu soruya ben değil mi itiraf etmeliyim. Muhtemelen Compiz, Unity, Global Menu'den biri --clearmodifiers
xdotool seçeneğiyle iyi çalışmadığından. Geçici bir çözüm , anahtarları kendiniz serbest bırakabilmeniz için komut dosyanızın önüne bir uyku eklemek olacaktır .xbindkeysrc
:
"sleep 0.5; app_specific_keys.sh"
Control+s
Bir sidenote olarak: bir terminalde çalışan programlar için tuşları değiştirmek istiyorsanız (örn. Vi veya konsol kipinde emacs) bu çalışmaz. Döndürülen uygulama sınıfı yine de "Gnome-terminal" olacaktır.
Umarım yardımcı olur.