zeg*_*jan 4 keyboard lock peripherals
我有一台笔记本电脑,但还连接了一个外部 USB 键盘。是否有可能以某种方式锁定内置笔记本电脑键盘(即按下的键应该无效)但保持外部键盘响应?
我正在运行 Ubuntu Gnome 16.04。我的笔记本电脑是联想 ThinkPad T420。
是的,这应该是可能的,使用xinput.
首先,xinput list在终端中运行。您应该会看到类似于以下内容的内容:
zachary@MCServer:~$ xinput list
? Virtual core pointer id=2 [master pointer (3)]
? ? Virtual core XTEST pointer id=4 [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)]
? Power Button id=7 [slave keyboard (3)]
Run Code Online (Sandbox Code Playgroud)
现在,您可能会看到两个键盘,而不是一个,因为您插入了两个键盘。我建议拔下 USB 键盘并运行命令。
记下 的 ID Virtual core XTEST keyboard。就我而言,它是5.
插入 USB 键盘,因为您将要禁用内部键盘。
运行此命令:
xinput set-prop 5 "Device Enabled" 0
Run Code Online (Sandbox Code Playgroud)
并将 5 替换为您的设备 ID。
要重新启用键盘:
xinput set-prop 5 "Device Enabled" 1`
Run Code Online (Sandbox Code Playgroud)
用您的设备 ID 替换 5。
如果需要,您也可以将它们放在单独的脚本中,然后从终端运行它们(或.desktop为您制作的脚本创建文件)。
编辑:
如果你愿意,我已经制作了一个脚本,它将检查指定设备的状态xinput并切换它(如果关闭则打开,如果打开则关闭)。您需要将device变量更改为相应的 ID。
zachary@MCServer:~$ xinput list
? Virtual core pointer id=2 [master pointer (3)]
? ? Virtual core XTEST pointer id=4 [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)]
? Power Button id=7 [slave keyboard (3)]
Run Code Online (Sandbox Code Playgroud)
编辑 2:
改进的脚本 - 自动设备 ID 检测(假设其名称是固定的)和桌面通知。
xinput set-prop 5 "Device Enabled" 0
Run Code Online (Sandbox Code Playgroud)