锁定内置笔记本电脑键盘,但保持外部 USB 键盘正常运行

zeg*_*jan 4 keyboard lock peripherals

我有一台笔记本电脑,但还连接了一个外部 USB 键盘。是否有可能以某种方式锁定内置笔记本电脑键盘(即按下的键应该无效)但保持外部键盘响应?

我正在运行 Ubuntu Gnome 16.04。我的笔记本电脑是联想 ThinkPad T420。

The*_*rer 7

是的,这应该是可能的,使用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)