外付けキーボードがある場合にキーボードを無効/有効にする方法

外付けキーボードがある場合にキーボードを無効/有効にする方法

私はスペイン語の 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つの質問があります。

  1. このスクリプトはフォアグラウンドで実行すると完璧に動作しますが、バックグラウンドで実行すると次のように動作します。
setsid kb-disabler-daemon.sh >/dev/null 2>&1 < /dev/null &

その後、外付けキーボードが取り外されると、メインキーボードを再度有効にできなくなります。何が間違っているのでしょうか?

  1. これを行うより簡単な方法はありますか? おそらく、これを行うユーティリティ アプリまたは何らかの構成でしょうか?

関連情報