gpt4 book ai didi

cocoa - 在 OS X (lion) 中,如何查找组合键是否用作键盘快捷键?

转载 作者:行者123 更新时间:2023-12-03 16:27:15 24 4
gpt4 key购买 nike

我想在我的应用程序(OS X lion)中放置一堆键盘快捷键,这样我就可以通过键盘完成大部分操作。当然,已经有一堆正在使用的热键组合列表,包括 HIG 中的列表。

是否有一些实用程序可用于键入组合键并查明它是否已经意味着某些内容(全局或 mac 标准 - 我不太担心重用另一个应用程序使用的某些特殊组合 -或者我应该是?)?

最佳答案

您可以使用 Carbon 来执行此操作。不要害怕在这里使用 Carbon,Cocoa 没有办法获取此信息,并且仍然支持 Carbon 方法。

CopySymbolicHotKeys() 函数返回一个字典数组,其中包含有关“键盘首选项” Pane 中定义的系统范围符号热键的信息。每个字典都包含有关单个热键的信息。

具体来说,每个字典都有三个键:

  • kHISymbolicHotKeyCode:热键的虚拟键代码,表示为CFNumber
  • kHISymbolicHotKeyModifiers:热键的键盘修饰符,表示为 CFNumber
  • kHISymbolicHotKeyEnabled:热键的启用状态,表示为 CFBoolean

显然,这些是原始键代码,因此如果您想查看键代码实际引用的内容,则需要做一些工作。

请注意,该数组不包含自定义的、特定于应用程序的热键,但这是一个小问题。

这是一个简单的例子:

#import <Carbon/Carbon.h>
CFArrayRef registeredHotKeys;


if(CopySymbolicHotKeys(&registeredHotKeys) == noErr)
{
CFIndex count = CFArrayGetCount(registeredHotKeys);
for(CFIndex i = 0; i < count; i++)
{
CFDictionaryRef hotKeyInfo = CFArrayGetValueAtIndex(registeredHotKeys, i);

CFNumberRef hotKeyCode = CFDictionaryGetValue(hotKeyInfo, kHISymbolicHotKeyCode);
CFNumberRef hotKeyModifiers = CFDictionaryGetValue(hotKeyInfo, kHISymbolicHotKeyModifiers);
CFBooleanRef hotKeyEnabled = CFDictionaryGetValue(hotKeyInfo, kHISymbolicHotKeyEnabled);

NSLog(@"key code: %@ modifiers: %@ enabled: %@", hotKeyCode, hotKeyModifiers, hotKeyEnabled);

}

//you MUST release the dictionary when finished with it
CFRelease(registeredHotKeys);
}

请记住,您需要将 Carbon 框架添加到项目设置中的将二进制文件与库链接构建阶段。

有关更多信息,您应该查看Carbon Event Manager docs (11Mb PDF)。

关于cocoa - 在 OS X (lion) 中,如何查找组合键是否用作键盘快捷键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10199609/

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