用C#独特地识别罗技Unifying键盘

12

我用C# 2010编写了一个小程序,可以通过创建设备数组来从不同的键盘输入中分离数据,其中包括以下部分:


--对于非统一键盘,此代码可正常工作--

InputDevice id;
NumberOfKeyboards = id.EnumerateDevices();
id = new InputDevice( Handle );
id.KeyPressed += new InputDevice.DeviceEventHandler( m_KeyPressed );
private void m_KeyPressed( object sender, InputDevice.KeyControlEventArgs e ) {
  lbDescription.Text = e.Keyboard.Name;
  // e.Keyboard.* has many useful strings, none work for me anymore.
}


我非常喜欢这个,所以我买了4个使用Unifying接收器的Logitech K230键盘。不幸的是,所有键盘数据现在都被多路复用,并且在我的代码中显示为单个键盘!

我该如何识别输入来自哪个“统一”的键盘?最好使用C#,但如果有解决方案,我也愿意看其他语言。


我见过一个Linux驱动程序,可以将“统一”的输入分开,以便HID层可以看到不同的键盘(并对它们进行不同的处理)。这让我对Windows的解决方案也存在感到乐观。 - cdehaan
抱歉在我的问题中添加了这么多评论,但对于任何感兴趣的人,这是我最初输入分割的项目来源:http://www.codeproject.com/Articles/17123/Using-Raw-Input-from-C-to-handle-multiple-keyboard - cdehaan
我对查看Linux驱动程序更新有些陌生,但这篇文章解释了不同的键盘连接到同一个unifying USB dongle时,可以在HID层中唯一呈现。这让我对Windows存在解决方案充满希望。http://lwn.net/Articles/458418/ 此外,这个周末我将尝试捕获和读取USB数据,感谢提供该工具的链接。 - cdehaan
经过一些研究,Logitech USB Dongle确实会在自身和Logitech程序之间发送一些数据以检索设备名称和信息。但这可能仅限于连接的设备,并且可能不是按键触发时逐个发送的。 - jduncanator
你可能能够编写自己的驱动程序,但那是一项巨大的工作。也许可以给罗技发送电子邮件寻求帮助? - jduncanator
显示剩余2条评论
1个回答

1

1
谢谢您的留言,但不幸的是,那个链接是我最初用作起点的(也在我的第二条评论中提到)。它适用于非统一键盘,但无法区分统一键盘。 - cdehaan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接