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
使用法:スイッチキーボード