xinput disable bcm5974
Gnome Terminal(および他のアプリケーション)がフォーカスを取得したときとxinput enable bcm5974
フォーカスを失ったときに実行したいと思います。
これは、libinputと私のMacBookのタッチパッドが友達ではなく、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