xbindkeys 사용에 대한 아이디어가 좋습니다.
.xbindkeysrc
새 키 바인딩을 추가 하십시오 .
"app_specific_keys.sh"
Control+s
"app_specific_keys.sh"
을 누르면 실행 됩니다 ctrl+s
.
이제 스크립트를 정의해야합니다. 활성 창과 현재 포커스가있는 앱의 이름을 가져와야합니다.
xprop -id `xdotool getactivewindow` |awk '/WM_CLASS/{print $4}'
이것은 트릭을 수행합니다 : xdotool에 활성 창을 요청한 다음 xprop에 주어진 id를 가진 창의 모든 속성을 요청한 다음 매우 자세한 출력을 응용 프로그램 이름 (실제로 클래스)으로 줄입니다. 그놈 터미널에서 이것을 실행하면
"Gnome-terminal"
이제 애플리케이션에 대한 조치를 정의해야합니다.
if [ $N = '"Gnome-terminal"' ]; then
xdotool key --clearmodifiers ctrl+s
else
xdotool key --clearmodifiers ctrl+d
fi
따라서 스크립트 "app_specific_keys.sh"
는 다음과 같이 보일 수 있습니다.
#!/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
이것은 작동 해야 하지만 이 질문 에서와 같이 작동 하지 않는다는 것을 인정해야합니다. 아마도 Compiz, Unity, Global Menu 중 하나 --clearmodifiers
가 xdotool 옵션 과 잘 작동하지 않기 때문일 수 있습니다. 해결 방법은 당신의에서 : 키 자신을 해제 할 수 있도록 데르에서 스크립트의 앞에 잠을 추가하는 것 .xbindkeysrc
이 키 바인딩로 변경
"sleep 0.5; app_specific_keys.sh"
Control+s
참고 : 터미널에서 실행되는 프로그램 (예 : 콘솔 모드의 vi 또는 emacs)에 대한 키를 변경하려는 경우에는 작동하지 않습니다. 반환 된 응용 프로그램 클래스는 여전히 "Gnome-terminal"입니다.
희망이 도움이됩니다.