C++检测Windows上的Apple耳机按钮

Pro*_*mer 5 windows winapi

背景信息:

我一直试图检测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.我的目标是开发一款小巧的软件,让苹果耳机能够在Apple硬件上运行的Windows上运行.

我知道如何使用C++和Win32 API增加Windows音量,但我仍然坚持我实际上必须从耳机中检测按钮点击的部分.

题:

1)我可以通过哪些方式检测耳机的输入(按键点击)?

看起来这个人能够阅读它.他只是在Mac OS Osct Detect硬件耳机上运行时才这样做

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);
Run Code Online (Sandbox Code Playgroud)

我试过的事:

1)我尝试使用GetLastInputInfo()LASTINPUTINFO从Windows API嗅出任何硬件投入,但悲惨地失败了.它适用于键盘和鼠标,但没有别的.

2)我也尝试用来RAWINPUTDEVICE从硬件读取低电平输入,但它只适用于键盘,鼠标和操纵杆输入.它没有检测到按下耳机按钮.

我的想法已经不多了.有人有任何解决方案?

注意:这不是一个重复的问题,因为我问如何在Windows而不是Mac上执行此操作.