我喜欢把外接键盘放在笔记本键盘上,难免会误触到,所以想写个脚本检测到有外接键盘自动禁用掉笔记本键盘。主要使用xinput来实现。
如下是脚本,可以直接执行进行测试(一般来说你要改下脚本里面前面的几个名字,你可以通过xinput list命令插拔设备看看自己的叫什么名字),测试OK后添加到用户登录后的执行脚本里面~/.profile即可。
#!/bin/bash
# 如果有外接USB键盘鼠标则禁用笔记本键盘触摸板
SLEEP_TIME=5
# 自带的键盘触摸板名字
KEYBOARD_DEV='AT Translated Set 2 keyboard'
MOUSE_DEV='ETPS/2 Elantech Touchpad'
# 外接的键盘触摸板名字
USB_KEYBOARD_DEV='USB Keyboard'
USB_MOUSE_DEV='Logitech USB Receiver'
while true
do
# 处理键盘的逻辑
HAVE_USB_KEYBOARD=`xinput list | grep "$USB_KEYBOARD_DEV"`
if [ "" != "$HAVE_USB_KEYBOARD" ]; then
if [ `xinput list-props "$KEYBOARD_DEV" | grep "Device Enabled" | awk -F ':' '{print $2}'` == 1 ]; then
xinput set-prop "$KEYBOARD_DEV" 'Device Enabled' 0
# echo Disable keyboard
fi
else
if [ `xinput list-props "$KEYBOARD_DEV" | grep "Device Enabled" | awk -F ':' '{print $2}'` == 0 ]; then
xinput set-prop "$KEYBOARD_DEV" 'Device Enabled' 1
# echo Enable keyboard
fi
fi
# 处理键鼠标的逻辑
HAVE_USB_MOUSE=`xinput list | grep "$USB_MOUSE_DEV"`
if [ "" != "$HAVE_USB_MOUSE" ]; then
if [ `xinput list-props "$MOUSE_DEV" | grep "Device Enabled" | awk -F ':' '{print $2}'` == 1 ]; then
xinput set-prop "$MOUSE_DEV" 'Device Enabled' 0
# echo Disable Touchpad
fi
else
if [ `xinput list-props "$MOUSE_DEV" | grep "Device Enabled" | awk -F ':' '{print $2}'` == 0 ]; then
xinput set-prop "$MOUSE_DEV" 'Device Enabled' 1
# echo Enable Touchpad
fi
fi
sleep $SLEEP_TIME
done