私はスペイン語の QWERTY キーボードを搭載した Ubuntu 20 LTS ラップトップを持っています。コーディング中にバッククォートやその他の特殊文字を簡単に見つけられるように、追加の外付け USB キーボードを購入しました。
外付けキーボードが接続されるとメインのキーボードが無効になり(キーを押して不要な入力をすることなく、外付けキーボードを上に置くことができる)、外付けキーボードが取り外されるとメインのキーボードが再び有効になるようにしたいと思います。
デーモンとして実行し、外部キーボードが接続されているかどうかをポーリングするスクリプトを作成しました。
#!/bin/bash
while true; do
if [ $(xinput -list | grep "SEM USB Keyboard" | wc -l) -gt 0 ]; then
echo "External keyboard found"
xinput --disable "AT Translated Set 2 keyboard"
echo "Main keyboard disabled"
else
echo "External keyboard NOT found"
xinput --enable "AT Translated Set 2 keyboard"
echo "Main keyboard enabled"
fi
echo "Waiting..."
sleep 5
done
ここで2つの質問があります。
- このスクリプトはフォアグラウンドで実行すると完璧に動作しますが、バックグラウンドで実行すると次のように動作します。
setsid kb-disabler-daemon.sh >/dev/null 2>&1 < /dev/null &
その後、外付けキーボードが取り外されると、メインキーボードを再度有効にできなくなります。何が間違っているのでしょうか?
- これを行うより簡単な方法はありますか? おそらく、これを行うユーティリティ アプリまたは何らかの構成でしょうか?