代码之家  ›  专栏  ›  技术社区  ›  Vadim

如果在其他应用程序中按下全局键盘快捷键,如何防止发出嘟嘟声?

  •  0
  • Vadim  · 技术社区  · 15 年前

    我正在使用全局事件监视器使用自定义键盘快捷键显示状态项菜单:

    globalEventMonitor = [NSEvent addGlobalMonitorForEventsMatchingMask:NSKeyDownMask handler:^(NSEvent *event)
    {
        if ([event keyCode] == kVK_F12)
        {
            [self handleGlobalShortcut];
            // How to prevent system beep?
        }
    }];
    
    积极的 应用程序不响应此关键事件。

    是否有任何方法可以防止活动应用程序在每次使用全局快捷方式时发出嘟嘟声?

    2 回复  |  直到 15 年前
        1
  •  3
  •   Darren    15 年前

    在事件监视器中,您需要激活应用程序,以便 将接收密钥事件。

    [NSApp activateIgnoringOtherApps:YES];
    

    编辑:看起来这样不行。

    根据文件 “您不能修改或以其他方式阻止事件传递到其原始目标应用程序”

    所以雪豹是新的 addGlobalMonitorForEventsMatchingMask API不适合处理热键。你需要继续使用旧的碳纤维 RegisterEventHotKey 应用程序编程接口。幸运的是,此API与雪豹上的64位Cocoa兼容。

        2
  •  2
  •   Middleware    15 年前

    似乎不可能。蜂鸣是[NSResponder noResponderFor]的默认行为。因此,应用程序会发出嘟嘟声,除非它通过添加最后一个响应程序来覆盖该行为,这在应用程序外部是不可能实现的。