通过udev自动检测外置键盘并开启关闭内置键盘

2016-8-24 笑看风云 linux知识

今天我把笔记本接了一个外置键盘,现在操作起来比用笔记本自带的内置键盘舒服多了,可惜的是kubuntu无法自动禁用内置键盘,每次手动禁用启用内置键盘是件非常麻烦的事,于是准备弄个自动检测是否连接外置键盘来自动关闭开启内置键盘的脚本,后来选项其实我需要的功能用udev更简单。于是网上找了半天udev教程终于写好了udev规则。

首先我们创建rules文件:

sudo touch /etc/udev/rules.d/60-keyboard.rules

然后把下面的内容写入到此文件中:
ACTION=="add", SUBSYSTEM=="usb", ATTRS{product}=="USB Keyboard", ENV{XAUTHORITY}="/home/abc/.Xauthority", ENV{DISPLAY}=":0", RUN+="/usr/bin/xinput set-prop 'AT Translated Set 2 keyboard' 'Device Enabled' 0"
ACTION=="remove", SUBSYSTEM=="usb", ATTRS{product}=="USB Keyboard", ENV{XAUTHORITY}="/home/abc/.Xauthority", ENV{DISPLAY}=":0", RUN+="/usr/bin/xinput set-prop 'AT Translated Set 2 keyboard' 'Device Enabled' 1"

注意,xauthority后面的位置要你的实际位置填写,disply请在shell中执行export后获取。


保存完毕后我们重新加载udev规则:

sudo udevadm control --reload

现在Linux就可以在插入拔出外置usb键盘之后自动关闭或开启笔记本的内置键盘了。


不过这样还有一个问题那就是如果键盘在系统开机之前就已经接入电脑,那么登录后内置键盘依旧处于开启状态,所以我们要创建一个检测脚本用于登录是检测是否连接外置键盘。

创建keyboard.sh文件,把下面内容写入此文件中:

 #!/bin/bash
 sleep 5
 if lsusb | grep Keyboard > /dev/null
 then
    xinput set-prop "AT Translated Set 2 keyboard" "Device Enabled" 0
else
    exit
fi

保存后赋予可执行权限,然后设置成开机启动就可在登录后自动根据键盘状态关闭内置键盘了。


ps:手动开启关闭请看此页面第112条:禁用笔记本键盘下面的内容。

标签: Linux shell脚本 脚本 笔记本

et_highlighter51

发表评论:

Powered by emlog sitemap