我需要区分(至少)两个连接到单个 PC 的 USB 键盘的按键。 是否有一种方法/程序可用于确定键盘 A 或键盘 B 是否按下键“s”(例如)? (首选语言是 C#)
伪代码:
if (keyPressed == 's')
{
if(keyboardID == 'A')
{
print("Key 's' was pressed by Keyboard A");
}
else if (keyboardID == 'B')
{
print("Key 's' was pressed by Keyboard B");
}
}
最佳答案
击键被操作系统作为事件
处理在 linux 中 对于每个输入设备,在 /dev/input/event*
中都有单独的事件队列(*
表示特定的设备编号)
在 linux 中,您可以使用命令 sudo lsinput
(input-utils) 列出所有输入设备
您可以捕获每个键盘的特定事件,请参阅 Linux keyboard event capturing /dev/inputX
在 windows 中 这很相似。您可以使用 rawInput
并为每个设备获取一个句柄。更深入的信息和示例代码在
https://blogs.msdn.microsoft.com/oldnewthing/20160627-00/?p=93755 (“设备句柄告诉我们哪个键盘产生了输入...”)
https://www.codeproject.com/Articles/17123/Using-Raw-Input-from-C-to-handle-multiple-keyboard
raw input handling (distinguishing secondary mouse)
https://msdn.microsoft.com/en-us/library/windows/desktop/ms645543%28v=vs.85%29.aspx
关于c# - 如何区分连接到同一主机的多个 USB 键盘的按键(在 C# 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41861135/