Macos 如何在OSX中禁用密钥?
我有一个应用程序需要在应用程序运行时禁用一些键(即:A、option、command、shift) 我该怎么做Macos 如何在OSX中禁用密钥?,macos,keyboard-hook,Macos,Keyboard Hook,我有一个应用程序需要在应用程序运行时禁用一些键(即:A、option、command、shift) 我该怎么做 所使用的语言或方法无关紧要。您可以使用命令检查、修改和阻止键盘事件 用户需要通过系统首选项的安全窗格授予您的应用程序辅助权限,以便在发布之前禁用事件 大概是这样的: - (void)setKeyBlocker { // You should filter this better than kCGEventMaskForAllEvents, depending on your n
所使用的语言或方法无关紧要。您可以使用命令检查、修改和阻止键盘事件 用户需要通过系统首选项的安全窗格授予您的应用程序辅助权限,以便在发布之前禁用事件 大概是这样的:
- (void)setKeyBlocker {
// You should filter this better than kCGEventMaskForAllEvents, depending on your needs.
CFMachPortRef eventTap = CGEventTapCreate(kCGHIDEventTap, kCGHeadInsertEventTap, kCGEventTapOptionDefault, kCGEventMaskForAllEvents, cgEventCallback, NULL);
CFRunLoopSourceRef runLoopSource = CFMachPortCreateRunLoopSource(kCFAllocatorDefault, eventTap, 0);
CFRunLoopAddSource(CFRunLoopGetCurrent(), runLoopSource, kCFRunLoopCommonModes);
CGEventTapEnable(eventTap, true);
CFRelease(eventTap);
CFRelease(runLoopSource);
}
CGEventRef callback(CGEventTapProxy proxy, CGEventType type, CGEventRef cgEvent, void *refcon) {
NSEvent *event = [NSEvent eventWithCGEvent:cgEvent];
if (event.type == kCGEventKeyDown) {
if ([event.characters isEqualToString:@"a"]) {
// Kill event
return NULL;
}
}
return cgEvent;
}
捕获并使用关键事件?