【问题标题】:System-wide hotkey for an application应用程序的系统范围热键
【发布时间】:2011-04-15 04:33:50
【问题描述】:

我有一个带有 3 个按钮的简单窗口,我正在尝试添加一个系统范围的热键,这样我就可以“按下”这些按钮,而无需切换到该应用程序,按下一个按钮,然后回到原来的状态正在做。

类似 Cmd + Shift + 1 按下按钮 1,Cmd + Shift kbd> + 2 按下按钮 2,等等。

有没有办法在 Cocoa 中实现这一点(使用 Objective-C)? 谢谢,感谢代码,因为我是 Cocoa 的新手。

【问题讨论】:

    标签: cocoa macos button


    【解决方案1】:

    我也不喜欢 PTHotKey,所以我最终写了一个新的包装器,可以在这里找到:

    http://github.com/davedelong/DDHotKey

    编辑

    您需要的 2 个文件是:

    你会像这样使用它:

    - (IBAction) registerHotkey:(id)sender {
      DDHotKeyCenter * c = [[DDHotKeyCenter alloc] init];
      if (![c registerHotKeyWithKeyCode:kVK_ANSI_1 modifierFlags:(NSCommandKeyMask | NSShiftKeyMask) target:self action:@selector(hotkeyWithEvent:) object:nil]) {
        NSLog(@"unable to register hotkey");
      } else {
        NSLog(@"registered hotkey");
      }
      [c release];
    }
    
    - (void) hotkeyWithEvent:(NSEvent *)hkEvent {
      NSLog(@"Hotkey event: %@", hkEvent);
    }
    

    【讨论】:

    • 谢谢,抱歉耽搁了。这是忙碌的一周。这看起来很有希望。有什么办法不使用碳框架?
    • @Jessica 是的,但不是真的。是的,如果您使用的是 10.6,并且您想过滤系统上的每一个按键事件,以寻找要识别的特定组合。不,如果你想要真正的热键行为。不过,我不会担心Carbonness。这部分 Carbon 已升级为兼容 64 位。
    • 好的,让我试试。两件事:1)你有一个zip文件的直接链接(我不使用git,我在你发布的页面上找不到下载链接)。虽然how to use 很清楚,但我是一个完整的新手。你有一个小的 sn-p,我可以用它作为热键 cmd-shift-1 的指南吗?
    • Jessica:使用该页面上的“下载源代码”按钮。
    • @Jessica 很高兴听到它。如果您对如何改进代码有任何建议,请告诉我。
    【解决方案2】:

    PTHotKey 在现代 SDK 上已经过时且失效(产生大量警告)。请改用SGHotKeysLib

    SGHotKeysLib 和 PTHotKey 都是可重用的源代码。您只需将这些类添加到您自己的项目中,然后从您自己的类中使用它们。

    【讨论】:

    • 太好了,感谢您的提示。你有机会发布一点sn-p吗?正如我所说,我只是从 Cocoa 开始
    【解决方案3】:

    有一个名为 PTHotKey 的库使这变得相当容易。你可以谷歌 PTHotKey 或者直接从http://code.google.com/p/shortcutrecorder/source/browse/trunk/Demo/HotKey/?r=2获取它

    【讨论】:

    • 谢谢你。问题 tho,当您说库时,我需要单独编译然后添加到我的应用程序中吗?
    猜你喜欢
    • 2012-05-30
    • 1970-01-01
    • 1970-01-01
    • 2012-04-30
    • 2012-01-04
    • 1970-01-01
    • 2020-01-04
    • 1970-01-01
    相关资源
    最近更新 更多