背景信息:
我一直试图检测Apple耳机上的按钮点击。耳机连接到运行Windows的MacBook Pro。它不是虚拟机。它正在运行Windows通常带有Apple的完整Windows驱动程序通过Boot Camp。
耳机是标准的Apple耳机,由三个按钮组成:音量增大,音量减小,中间按钮和麦克风。
当我使用Mac Os时,如果在耳机上按下音量增大按钮,Mac Os会将其音量增加一。当按下耳机上的voulume按钮时,它也会降低音量。
标准耳/耳机使用 三个 导电针脚来接收(仅限L / R扬声器)信号,而苹果版本正在使用 四个 导电引脚,用于接收(L / R扬声器)和发送(按钮)信号。这款耳机是为iPhone制造的,但是当它在Mac Os上运行时我很惊讶。
这让我相信MacBook Pro硬件可以支持这个 四个 导电针式耳机。它适用于Mac OS,但在Windows上 NOT 。我的目标是开发一款小巧的软件,让苹果耳机能够在Apple硬件上运行的Windows上运行。
我知道如何使用C ++和Win32 API增加Windows音量,但是我实际上必须检测从耳机中点击按钮的部分。
问题:
1 )我可以通过哪些方式检测来自耳机的输入(按键点击)?
看起来这个人能够阅读它。他只是在Mac Os上运行时才这样做 Detect hardware headphone presses in mac
2 )如果我编译代码,这个人在Mac OS上作为DLL文件工作,然后在运行Windows时调用该函数,它会工作吗?
3 )我是否需要制作自己的驱动程序才能使其正常工作?
4)以下代码来自我上面发布的链接。什么是Windows API函数,类对于下面的下面的Mac Os代码是否相同?
id array = [[DDHidDevice allDevices] filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"productName == \"Apple Mikey HID Driver\""]];
DDHidDevice *mic = [array count] ? [array objectAtIndex:0] : nil;
// it isn't a keyboard
NSLog(@"%@", mic.primaryUsage);
assert(mic.usage==1 && mic.usagePage==12);
我做过的尝试:
1 )我尝试使用GetLastInputInfo()
与来自Windows API的LASTINPUTINFO
来嗅探任何硬件输入但是失败了。它适用于键盘和鼠标,但没有别的。
2 )我还尝试使用RAWINPUTDEVICE
从硬件读取低级输入,但它只适用于键盘,鼠标和操纵杆输入。它没有检测到按下耳机按钮。
我的想法已经不多了。有人有任何解决方案吗?
注意:这不是一个重复的问题,因为我在Windows上询问如何执行此操作。