xinput disable bcm5974
Gnome Terminal(및 다른 응용 프로그램)이 포커스를 얻을 때와 xinput enable bcm5974
포커스를 잃을 때 실행 하고 싶습니다 .
이는 libinput과 내 맥북의 터치패드가 친구가 아니고, libinput의 팜 방지 기능이 거의 작동하지 않고, Vim에서 코드를 편집할 때 정말 불편하고 예기치 않게 스크롤되거나 터미널에 명령을 입력할 때 미치기 때문입니다.
libinput 1.1.4-1
xf86-input-libinput 0.16.0-1
ArchLinux
답변1
다음 명령은 집중된 애플리케이션의 이름을 제공합니다.
xdotool getwindowfocus getwindowname
이를 사용하여 목표를 달성하기 위한 래퍼 스크립트를 작성할 수 있습니다.
예를 들어
while [ true ]
do
FocusApp=`xdotool getwindowfocus getwindowname`
if [ "xTerminal" -eq "x$FocusApp" ]; then
xinput disable bcm5974
else
xinput enable bcm5974
fi
done
위의 코드는 체크 포커스 애플리케이션을 영원히 실행합니다. 예상한 결과가 나오면 실행if 조건그렇지 않으면 실행그렇지 않으면 조건.
필요에 맞게 이 스크립트를 세부적으로 조정할 수 있습니다.
답변2
xprop
내 창을 가져오는 데 사용하는 클래스는 xdotool
다음과 같습니다.
xdotool search --onlyvisible --classname gnome-terminal-server behave %@ focus exec xinput disable bcm5974 &
xdotool search --classname gnome-terminal-server behave %@ blur exec xinput enable bcm5974 &
이전 스크립트는 불안정하므로 @SHW의 답변을 기반으로 한 다음 스크립트가 더 좋습니다.
#!/bin/sh
[ "$(pgrep -x $(basename $0))" != "$$" ] && exit 1
while [ true ]
do
window=`xdotool getwindowfocus getwindowname`
is_enabled=`xinput --list-props bcm5974 | awk '/Device Enabled/{print $NF}'`
if [ "$window" = "Terminal" -o "$window" = "Guake!" ]; then
if [ "$is_enabled" = "1" ]; then
xinput disable bcm5974
fi
else
if [ "$is_enabled" = "0" ]; then
xinput enable bcm5974
fi
fi
sleep 1
done