2011-05-24 27 views
2

Changing the keystrokes of a USB keyboard更改或覆盖USB键盘的行为,以一个更通用控制器

我的问题是非常类似于上面的一个...(对此也没有明确的答案)

我有一个漂亮的USB键盘,我想用它来控制我写的音频/视频程序。我不能有USB键盘输入干扰常规操作系统接口 -

因此,我需要有操作系统将其识别为某种通用HID设备,或MIDI设备,或发送的东西OSC消息。

我正在OSX上编写程序,但想弄清楚一个跨平台的解决方案,不涉及我黑客键盘的硬件 - 希望某种程序或脚本,我可以使用。原因是我想分发这个程序让其他人轻松使用。

任何想法从哪里开始?我想我可能需要编写一个单独的程序供用户选择USB设备,并将其重新路由到我的程序中...

任何语言都很好 - 我用Python编写代码,有时候是C和Java /处理。

回答

1

不幸的是,你会发现这极其困难:大多数现代操作系统会自动检测HID配置文件并为其加载驱动程序,并且一般而言,使其很难覆盖该默认行为。

在不窃听硬件的情况下,您需要以某种方式覆盖操作系统对该特定USB VID(供应商ID)和PID(产品ID)的默认行为,并指示操作系统加载您自己的定制内核扩展?我建议从http://www.opensource.apple.com/source/IOUSBFamily/IOUSBFamily-206.4.1/AppleUSBKeyboard/开始使用AppleUSBKeyboard驱动程序的源代码,然后确定如何将自定义内置版安装为特定键盘的VID和PID的首选USB驱动程序。之后,它应该是凌乱凌乱的问题,只发送密钥到您的应用程序,而不是其他任何东西。

+0

是否可以写一个函数,禁用所有键的常规操作系统键盘输入,除了像ESC这样的东西,如果我的程序焦点? – jeffrey 2011-05-24 21:59:18

0

是否可以写一个 功能禁用定期 操作系统键盘输入 所有键除了像ESC如果 我的计划是在重点是什么? - 杰弗里月 24日21:59

是的,这应该是很可能的,我不知道有关Mac,但在Win32你想有一个全局键盘钩子(查找和SetWindowsHookEx)