0
응용 프로그램이 실행 중일 때 일부 키를 사용 중지해야하는 응용 프로그램 (예 : A, option, command, shift)이 있습니다.OS X에서 키를 비활성화하는 방법은 무엇입니까?
어떻게하면됩니까?
사용 된 언어 또는 방법은 중요하지 않습니다.
응용 프로그램이 실행 중일 때 일부 키를 사용 중지해야하는 응용 프로그램 (예 : A, option, command, shift)이 있습니다.OS X에서 키를 비활성화하는 방법은 무엇입니까?
어떻게하면됩니까?
사용 된 언어 또는 방법은 중요하지 않습니다.
CGEventTap
으로 키보드 이벤트를 검사, 수정 및 차단할 수 있습니다.
사용자는 시스템 환경 설정의 보안 패널을 통해 응용 프로그램 보조 권한을 부여해야 이벤트를 게시하기 전에 비활성화 할 수 있습니다. 이 같은
뭔가 :
- (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;
}
캡처 및 키 이벤트를 소비? – Whymarrh