Eu faria:
#! /bin/sh -
device=TouchPad
if
LC_ALL=C xinput list-props "$device" |
grep -q 'Device Enabled.*1$'
then
xinput disable "$device"
else
xinput enable "$device"
fi
Isso é verificar se o dispositivo está de fato ativado ou desativado, em vez de manter uma variável >> que, mais cedo ou mais tarde, ficará fora de sincronia com a realidade e para a qual você precisa com um mecanismo de bloqueio exclusivo para impedir o acesso simultâneo. Essa variável teria que estar vinculada à chamada atual do servidor X (você pode usar uma propriedade na janela raiz do monitor).
Explicação: xinput list-props "$device"
lista as propriedades do dispositivo (em inglês com LC_ALL=C
), uma delas é a Device Enabled
one. grep
procura linhas contendo Device Enabled
e terminando em 1
e retorna um status de saída verdadeiro (0) se encontrado (sem exibir nada com -q
). Se encontrado (se o dispositivo estiver ativado), chamamos xinput disable
e xinput enable
caso contrário.