gpt4 book ai didi

macos - 如何在 Mac OS X 中实现全局键盘 Hook ?

转载 作者:行者123 更新时间:2023-12-03 00:53:54 27 4
gpt4 key购买 nike

我知道这可以在 Windows 上完成,并且 XGrabKey 可用于 X11,但是 Mac OS X 呢?我想创建一个类,允许设置即使应用程序窗口处于非事件状态也可以调用的快捷键。

最佳答案

Cocoa 中(还没有?)支持这一点。您仍然可以使用旧的 Carbon 库(64 位兼容),但不幸的是 Apple 决定删除有关该主题的所有文档。

这里有一篇不错的博客文章:http://dbachrach.com/blog/2005/11/program-global-hotkeys-in-cocoa-easily/

这篇文章对我来说有点长,所以这里是简短的版本:

- (id)init {
self = [super init];
if (self) {
EventHotKeyRef hotKeyRef;
EventHotKeyID hotKeyId;
EventTypeSpec eventType;

eventType.eventClass = kEventClassKeyboard;
eventType.eventKind = kEventHotKeyPressed;

InstallApplicationEventHandler(&mbHotKeyHandler, 1, &eventType, NULL, NULL);

hotKeyId.signature = 'hotk';
hotKeyId.id = 1337;

RegisterEventHotKey(kVK_ANSI_C, cmdKey + shiftKey, hotKeyCopyId, GetApplicationEventTarget(), 0, &hotKeyRef);
}
}

OSStatus mbHotKeyHandler(EventHandlerCallRef nextHandler, EventRef event, void *userData) {
// Your hotkey was pressed!
return noErr;
}

热键通过 RegisterEventHotKey(…) 调用注册。在本例中,它注册了 CMD + Shift + C。

ANSI 键在 HIToolbox/Events.h 中定义,因此您可以在那里查找其他键(只需在 XCode 中按 CMD + Shift + O,然后输入 Events.h 即可找到它)。

如果您想要多个热键或者想要从处理程序调用方法,您必须做更多的工作,但这都在本答案顶部附近的链接中。

我一直在寻找这个问题的简单答案,所以我希望这对其他人有帮助......

关于macos - 如何在 Mac OS X 中实现全局键盘 Hook ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2894869/

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