Como desabilitar/habilitar o teclado quando um teclado externo estiver presente

Como desabilitar/habilitar o teclado quando um teclado externo estiver presente

Eu tenho um laptop Ubuntu 20 LTS com teclado QWERTY espanhol. Para facilitar a localização de crases e outros caracteres especiais durante a codificação, comprei um teclado USB externo adicional.

Gostaria de fazer com que quando o teclado externo estiver conectado, o principal fique desabilitado (para que eu possa colocá-lo em cima sem pressionar as teclas resultando em entradas indesejadas), e para que quando o teclado externo for desconectado, o principal é ativado novamente.

Eu criei um script para rodar como um daemon e fazer uma pesquisa para ver se o teclado externo está conectado.

#!/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

Duas perguntas aqui.

  1. O script funciona perfeitamente quando executado em primeiro plano, mas quando executado em segundo plano assim:
setsid kb-disabler-daemon.sh >/dev/null 2>&1 < /dev/null &

Em seguida, não consegue habilitar novamente o teclado principal quando o externo é desconectado. O que estou fazendo de errado?

  1. Existe uma maneira mais simples de fazer isso? Talvez um aplicativo utilitário ou algum tipo de configuração que faça isso?

informação relacionada