您在iPhone上使用的许多耳机(包括Apple自己的耳机)都有按钮,麦克风或两者兼而有之.
它们可以很好地与Mac配合使用,iTunes可以正确识别按钮.
我的问题是 - 你如何在Cocoa中检测到这些按钮?我正在为您的菜单栏中的iTunes写一个小的替代品,我还想要响应耳机按钮,而不仅仅是键盘的媒体键.
谢谢你的回复!
背景信息:
我一直试图检测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()与 …