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

时间:2014-10-31 13:48:37

标签: 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上 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上询问如何执行此操作。

0 个答案:

没有答案