想必大家都经历过这样的情况:在使用usb接口的外接键盘的时候,很容易按到笔记本自带的键盘,从而导致输入错误。尤其是你将外接键盘放在笔记本键盘上面的时候。怎么解决这个问题呢?
搜索之后,找到了答案。注意,这是在ubuntu linux下的解决方法。并不适用于windows。
使用xinput命令即可完美解决。xinput命令的常用选项如下所示:
xinput --list:查看本机的所有输入设备
xinput --query-state <device>:查询设备的状态
xinput --list-props <device>:列出该设备可以设置的选项有哪些
xinput --set-prop <device> <property> <value>:设置该设备的属性为给定的value值
xinput --enable <device>:启用该设备,该命令与xinput --set-prop <device> "Device Enabled" 1是等价的(如果该设备的可设置选项里有Device Enabled项的话)
xinput --disable <device>:禁用该设备,该命令与xinput --set-prop <device> "Device Enabled" 0是等价的(如果该设备的可设置选项里有Device Enabled项的话)
所以解决该问题的具体步骤为:
Setp 1:使用xinput --list 找到笔记本键盘的ID
可以看到,在我的机器上, AT Translated Set 2 Keyboard项的ID为14(注意,这个值14不是一成不变的,在你关机重新开机之后是可能变化的。所以在你在禁用某设备之前应该先查找它的ID)。
wallace@zhenghong-E430:~$ xinput --list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ ThinkPad USB Travel Mouse id=12 [slave pointer (2)]
⎜ ↳ TPPS/2 IBM TrackPoint id=16 [slave pointer (2)]
⎜ ↳ SynPS/2 Synaptics TouchPad id=15 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Video Bus id=7 [slave keyboard (3)]
↳ Video Bus id=8 [slave keyboard (3)]
↳ Power Button id=9 [slave keyboard (3)]
↳ Logitech USB Keyboard id=10 [slave keyboard (3)]
↳ Logitech USB Keyboard id=11 [slave keyboard (3)]
↳ Integrated Camera id=13 [slave keyboard (3)]
↳ ThinkPad Extra Buttons id=17 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=14 [slave keyboard (3)]
wallace@zhenghong-E430:~$
Step 2:使用xinput --set-prop <ID> "Device Enabled" 0 (从上面的内容可知,使用xinput --disable命令是等价的)来禁用笔记本键盘。如果要重新启用它,则将命令中的0更改为1即可。
wallace@zhenghong-E430:~$ xinput --set-prop 14 "Device Enabled" 0
wallace@zhenghong-E430:~$
至此,你已经可以发现笔记本自带的键盘已经不能输入数据了。而外接的USB键盘可以输入数据。由此,问题完美解决!