c# - 如何区分连接到同一主机的多个 USB 键盘的按键(在 C# 中)

标签 c# keyboard usb

我需要区分(至少)两个连接到单个 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/

相关文章:

python - 如何检测python中的当前键盘语言

android - 在 Android EditText 中,如何从软键盘中删除建议栏?

android - 针对 Android 的 libusb 进行编译和链接

c# - 如何在 C# 中从 System.Drawing.Color 转换为 Excel.ColorFormat?更改评论颜色

C#按时间同步2个不同类型的列表

c# - Linq to Entities - where 语句抛出 System.NotSupported 异常

ios编辑表格,键盘隐藏字段

android - 绕过 android 5.1 的 android usb 主机权限确认对话框

c++ - 在Mac上读写USB(HID)中断端点

c# - Resharper Ultimate 安装扩展失败