![如何将两个键盘的输入直接发送到一台计算机上的两个相应终端?](https://linux22.com/image/18896/%E5%A6%82%E4%BD%95%E5%B0%86%E4%B8%A4%E4%B8%AA%E9%94%AE%E7%9B%98%E7%9A%84%E8%BE%93%E5%85%A5%E7%9B%B4%E6%8E%A5%E5%8F%91%E9%80%81%E5%88%B0%E4%B8%80%E5%8F%B0%E8%AE%A1%E7%AE%97%E6%9C%BA%E4%B8%8A%E7%9A%84%E4%B8%A4%E4%B8%AA%E7%9B%B8%E5%BA%94%E7%BB%88%E7%AB%AF%EF%BC%9F.png)
我想将两个 USB 键盘连接到同一台计算机 (Linux)。然后我想打开 2 个控制台 #1 和 #2,并在每个控制台上执行一个进程。然后我想接收来自控制台#1上键盘#1的输入和来自控制台#2上键盘#2的输入,即每个键盘将输入提交到特定进程。如何才能实现这一目标?假设代码是用 C 编写的。谢谢!
答案1
要让程序从特定键盘读取输入,您可以使其从正确的输入设备读取原始事件。输入设备是(具有典型的 udev 设置) ,您可以通过和/dev/event[0-9]*
找出您正在寻找的设备。通过设备标识(供应商和序列号)查找以匹配设备,或通过插入的 USB 端口进行匹配。/dev/input/by-id/*-kbd
/dev/input/by-path/*-kbd
by-id
by-path
您可能需要微调在/dev/*/by-*/
.您可以通过运行找到 udev 所拥有的信息udevadm info -a -n /dev/input/event42
(如果您有一个报告有关设备的更多信息的程序,您也可以告诉 udev 使用其他程序的输出)。如果您无法区分两个键盘,请查看输出udevadm info
以区分特征。您还可以运行udevadm test /class/input/event42
来查看 udev 当前正在应用哪些规则。