usando xinput para obter o estado do dispositivo

2

Eu tenho um script simples para transformar meu teclado de escrita usando xinput. Como posso obter o estado atual do dispositivo (ativado ou desativado) para que, quando eu executar o script, eu não tenha que especificar on / off, ele apenas reverte o estado?

(aviso - isso pode desligar o teclado; manuseie com cuidado)

#!/bin/bash  

case "$1" in
    on)
    export DISPLAY=:0
        xinput set-prop 14 "Device Enabled" 1
    killall -q onboard 
    ;;
    off)
    onboard &> /dev/null 2>&1
    export DISPLAY=:0
    xinput set-prop 14 "Device Enabled" 0
    ;;
esac

agora eu corro: ./my_keyboard on se o teclado estiver desligado. Gostaria de executar apenas ./my_keyboard e alterá-lo. Não parece haver nada no docs do xinput (o estado da consulta não tem a propriedade).

    
por Rilcon42 29.01.2016 / 06:40

2 respostas

1

Para responder diretamente à sua pergunta: Você pode analisar a saída desse comando para obter o estado do dispositivo:

xinput list-props $DEVICE_NAME_OR_ID

Acho que o ID do dispositivo pode variar, por isso recomendo usar o nome. Eu não tenho certeza sobre isso.

Eu escrevi um pequeno script para alternar meu próprio touch pad:

#!/bin/bash                                                                      

DEVICE='SynPS/2 Synaptics TouchPad'                                              

enabled=$(xinput list-props "$DEVICE" | awk '/^\tDevice Enabled \([0-9]+\):\t[01]/ {print $NF}')
case $enabled in                                                                
  0)                                                                            
    xinput enable "$DEVICE"                                                     
    echo "$DEVICE enabled"                                                      
    ;;                                                                          
  1)                                                                            
    xinput disable "$DEVICE"                                                     
    echo "$DEVICE disabled"                                                      
    ;;                                                                          
  *)                                                                            
    echo                                                                        
    xinput list --name-only                                                     
    ;;                                                                          
esac
    
por 23.03.2016 / 23:05
1

Abaixo está a função de alternar "Teclado USB"

function toggle-keyboard()
{
    DEVICE="USB keyboard"
    DEVID='xinput list | grep -i $DEVICE | head -1 | cut -f2 | grep -oE '[[:digit:]]+''
    STATE='xinput list-props $DEVID | grep "Device Enabled" | cut -d$'\t' -f3 | tr -d '\n''

    [ $STATE -eq 1 ] && STATE=0 || STATE=1
    xinput set-prop $DEVID "Device Enabled" $STATE
    [ $# -gt 1 ] && $(echo Changing \"$DEVICE\"State to $STATE)
}; declare -fx toggle-keyboard

Usage: toggle-keyboard

    
por 06.01.2017 / 03:48