gpt4 book ai didi

cocoa - 在 OS X 中检测耳机按钮按下情况

转载 作者:行者123 更新时间:2023-12-03 16:04:54 26 4
gpt4 key购买 nike

您在 iPhone 上使用的许多耳机(包括 Apple 自己的耳机)都有按钮、麦克风或两者兼而有之。

它们与 Mac 配合良好,并且 iTunes 可以正确识别按下的按钮。

我的问题是 - 你如何在 Cocoa 中检测到这些按钮的按下?我正在编写一个位于菜单栏中的 iTunes 的小型替代方案,并且我还希望能够响应耳机按钮,而不仅仅是键盘的媒体键。

感谢您的回复!

最佳答案

查看 DDHidLib http://code.google.com/p/ddribin/ 。为了进行快速测试,您可以子类化 DDHidKeyboard 并重写以下 3 个方法。然后,在提供的 HIDDeviceTest 目标的 KeyboardPaneController.m - (void) awakeFromNib; 中,替换NSArray * keyboards = [DDHidKeyboard allKeyboards];NSArray * keyboards = [<YourSubclass> allKeyboards];或任何您为子类命名的内容。现在,当您运行 HIDDeviceTest 目标时,您应该会看到“键盘”选项卡下列出了“Apple Mikey HID 驱动程序”。幸运的话,您将看到按下耳机远程按钮的输入。尝试双击和三次点击中间按钮,您会发现每个按钮都是不同的事件类型。我仅在运行 Lion 10.7.3 的 2011 年中 13 英寸 Macbook Air 以及运行 SL 10.6.8 的 2010 年中 17 英寸 Macbook Pro 上对此进行了测试。

#import "DDHidLib.h"

@implementation <YourSubclass>

+ (NSArray *) allKeyboards;
{
NSArray *array = [DDHidDevice allDevicesMatchingUsagePage: kHIDPage_Consumer
usageId: kHIDUsage_GD_Pointer
withClass: self
skipZeroLocations: NO];

//Only return "Apple Mikey HID Driver", if not found, return nil.
for (DDHidDevice *device in array) {
if ([[device productName] isEqualToString:@"Apple Mikey HID Driver"]) {
return [NSArray arrayWithObject:device];
}
}
return nil;
}

- (void) initKeyboardElements: (NSArray *) elements;
{
NSEnumerator * e = [elements objectEnumerator];
DDHidElement * element;
while (element = [e nextObject])
{
unsigned usagePage = [[element usage] usagePage];
unsigned usageId = [[element usage] usageId];
if (usagePage == kHIDPage_GenericDesktop)
{
if ((usageId >= 0x89) && (usageId <= 0x8D))
{
[mKeyElements addObject: element];
}
}
NSArray * subElements = [element elements];
if (subElements != nil)
[self initKeyboardElements: subElements];
}
}

- (void) ddhidQueueHasEvents: (DDHidQueue *) hidQueue;
{
DDHidEvent * event;
while ((event = [hidQueue nextEvent]))
{
DDHidElement * element = [self elementForCookie: [event elementCookie]];
unsigned usageId = [[element usage] usageId];
SInt32 value = [event value];
if (value == 1)
[self ddhidKeyboard: self keyDown: usageId];
}
}

关于cocoa - 在 OS X 中检测耳机按钮按下情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7772976/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com