Как отключить/включить клавиатуру при наличии внешней клавиатуры

Как отключить/включить клавиатуру при наличии внешней клавиатуры

У меня ноутбук Ubuntu 20 LTS с испанской QWERTY-клавиатурой. Для удобства поиска обратных кавычек и других специальных символов во время кодирования я приобрел дополнительную внешнюю 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

Здесь два вопроса.

  1. Скрипт отлично работает при запуске на переднем плане, но если запустить его в фоновом режиме, вот так:
setsid kb-disabler-daemon.sh >/dev/null 2>&1 < /dev/null &

Затем он снова не может включить основную клавиатуру, когда внешняя отключается. Что я делаю не так?

  1. Есть ли более простой способ сделать это? Может быть, служебное приложение или своего рода конфигурация, которая это сделает?

Связанный контент