在哪里可以找到与Cocoa的NSEvent类一起使用的密钥代码列表?

时间:2010-01-17 07:32:22

标签: cocoa events keyboard

我正在寻找可以与Cocoa的NSEvent类一起使用的可用密钥代码的完整列表。 NSEvent类具有keyCode属性,定义为unsigned short。以下代码放置在适当的UI对象中时,将在按下键代码时对其进行回显:

- (void)keyDown:(NSEvent *)theEvent
{
    NSLog(@"%d", [theEvent keyCode]);
}

从这段代码中,我可以很容易地看到哪些代码与某些键匹配,但我想找到一个列出所有代码的官方文档。我希望Apple的头文件看起来像这样:

enum {
    ...
    NSKeyCodeLeftArrow = 123,
    NSKeyCodeRightArrow = 124,
    ...
};

但如果有的话,我还没有找到它。

5 个答案:

答案 0 :(得分:29)

Here you go.这是美国扩展键盘布局上所有虚拟键码的地图,来自旧的Inside Macintosh:Text。大多数关键代码目前仍在使用,但我怀疑最新的Apple键盘 - 带有媒体键的键盘 - 可能已经改变了一些功能键。

注意:ISO和非扩展键盘可能具有某些键的不同键码。如果您有这样的键盘,请尝试Peter Maurer's Key Codes应用程序。他的网站已关闭,所以here's my copy

答案 1 :(得分:22)

据我所知,没有枚举或密钥代码列表。但是,为了获得类似的行为,您可以在keyDown中调用interpretKeyEvents::这将调用适当的操作方法,所有这些方法都记录在NSResponder中(例如moveLeft:insertTab:等)。< / p>

答案 2 :(得分:12)

要在XCode 4中包含HIToolbox / Events.h(如berrange的答案中所述),您只需要链接Binaries with Libraries并添加Carbon框架(包括HIToolbox),然后导入文件中的主Carbon头你在哪里检查keyCodes。

#import <Carbon/Carbon.h>

我花了一秒时间才发现我无法直接导入HIToolbox / Events.h,所以我想我会发布这个以防万一。“

答案 3 :(得分:6)

根据此论坛主题,常量可在HIToolbox / Events.h

中找到

http://forums.macrumors.com/showthread.php?t=780577

他们也方便地将整套常量复制+粘贴到论坛中。否则标题可在此处获取:

/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/Events.h

答案 4 :(得分:2)

对于Swift,请导入Carbon.HIToolbox.Events,然后直接使用常量:

import Carbon.HIToolbox.Events

let keyCode = kVK_ANSI_A

有关所有代码的列表,请转到Carbon.HIToolbox.Events的定义:

screenshot