Script para desligar o teclado do laptop se houver teclado USB presente [duplicado]

3

Meu teclado de laptop está quebrado ( Esc continua sendo pressionado aleatoriamente, não posso consertá-lo), então comprei um teclado USB. Eu quero escrever um script que será executado no login, que irá verificar se o meu teclado USB está conectado, e desabilite o teclado do meu laptop em caso afirmativo.

Eu quero usar o xinput para fazer isso. para o fundo, o comando correto para desativar o dispositivo com o ID 14 seria:

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

Eu tenho o que eu pensei ser um método confiável de ter certeza de que estou desativando o dispositivo correto, listando, digitando, cortando para obter o número de ID e, em seguida, usando-o no comando correto da seguinte forma:

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

No entanto, mesmo isso dá uma falha:

unable to find device 14

Eu não sei por que isso é (primeira pergunta), mas eu queria saber como eu iria verificar se o teclado USB está lá? Eu preciso de uma função if, obviamente, algo que verifica se qualquer resultado é retornado quando eu grep a string "USB Keykoard USB" [sim que a ortografia está errada, mas o que aparece na minha lista] de xinput --list . Então, minha segunda pergunta é: como eu escrevo essa função?

    
por user5866 14.02.2013 / 18:15

1 resposta

0

Eu suspeito que o problema com o seu comando shell está aqui:

| cut -d "[" -f 1

Isso deixa você com um argumento de 14 (o número 14 seguido por vários espaços; note que o markdown não está sendo exibido por algum motivo). Como o argumento que xinput está procurando é 14 em vez de 14 (14 mais vários espaços), o comando falha.

Em vez disso, use o espaço em vez do [ como delimitador nesta seção:

| cut -d " " -f 1
    
por 15.02.2013 / 00:57