Сценарий для отключения клавиатуры ноутбука, если присутствует клавиатура USB

Моя клавиатура ноутбука сломана ( Esc держит случайным образом нажатой, не может ее исправить), поэтому вместо этого я купил USB-клавиатуру. Я хочу написать скрипт, который будет запускаться при входе в систему, который будет проверять, подключена ли моя клавиатура USB, и отключите мою клавиатуру ноутбука, если это так.

Я хочу использовать xinput для этого. для фона правильная команда для отключения устройства с идентификатором 14:

xinput set-int-prop 14 "Device Enabled" 8 0 

У меня есть то, что я считал надежным методом, чтобы убедиться, что я отключил правильное устройство, указав, grepping, cut, чтобы получить идентификационный номер, а затем используя его в правильной команде:

xinput --list | egrep "AT Translated" | cut -d "=" -f 2| cut -d "[" -f 1 | xargs -I {} xinput set-int-prop {} "Device Enabled" 8 0

Однако даже это дает ошибку:

 unable to find device 14 

Я не уверен, почему это (первый вопрос), но мне было интересно, как я буду проверять, есть ли USB-клавиатура? Мне нужна функция if, очевидно, что-то, что проверяет, возвращается ли какой-либо результат, когда я grep строку «USB USB Keykoard» [да, что орфография неверна, но что появляется в моем списке] из xinput --list . Поэтому мой второй вопрос: как мне написать, что если функция?

Я подозреваю, что проблема с вашей командой оболочки здесь:

 | cut -d "[" -f 1 

Это дает вам аргумент 14 (число 14, за которым следует несколько пробелов, обратите внимание, что уценка по какой-либо причине не отображает его). Поскольку аргумент, который xinput , равен 14 вместо 14 (14 плюс несколько пробелов), команда выходит из строя.

Вместо этого используйте пробел вместо [ в качестве разделителя в этом разделе:

 | cut -d " " -f 1