xinput을 사용하여 장치 상태 가져오기

xinput을 사용하여 장치 상태 가져오기

xinput을 사용하여 키보드를 회전시키는 간단한 스크립트가 있습니다. 스크립트를 실행할 때 켜짐/꺼짐을 지정할 필요 없이 상태만 반전되도록 장치의 현재 상태(활성화 또는 비활성화)를 어떻게 얻습니까?

(경고 - 키보드가 꺼질 수 있으므로 주의해서 진행하세요)

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

이제 실행합니다: ./my_keyboard on키보드가 닫혀 있으면. 나는 실행 ./my_keyboard하고 상태를 변경하고 싶습니다. xinput에는 아무것도 없는 것 같습니다.문서(쿼리 상태에는 이 속성이 없습니다).

답변1

질문에 직접 대답: 이 명령의 출력을 구문 분석하여 장치 상태를 확인할 수 있습니다.

xinput list-props $DEVICE_NAME_OR_ID

기기 ID가 다를 수도 있으니 이름을 사용하는 것을 추천드립니다. 하지만 나는 그것에 대해 잘 모르겠습니다.

나는 나만의 터치패드를 전환하기 위한 작은 스크립트를 작성했습니다.

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

답변2

다음은 "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

사용법: 스위치 키보드

관련 정보