문제

코코아에서 글로벌 마우스 이동 이벤트를 등록하는 방법이 있습니까? 탄소를 사용하여 이벤트에 등록 할 수있었습니다. InstallEventHandler(), 그러나 코코아 동등한 것을 선호합니다. 나는 찾았다 NSNotificationCenter 이벤트이지만 공개 이벤트 이름이없는 것 같습니다 (개인 이벤트 이름이 있습니까?)

또는 사용 방법이 있습니다 NSTrackingArea a clearColor 배경?

앱은 스노우 레오파드입니다.

도움이 되었습니까?

해결책

Snowleopard에는 새로운 클래스 방법이 있습니다 NSEvent 원하는 것을 정확히 수행합니다. + (id)addGlobalMonitorForEventsMatchingMask:(NSEventMask)mask handler:(void (^)(NSEvent*))block. 당신은 원할 것입니다 mask = NSMouseMovedMask.

다른 팁

stackoverflow에서 비슷한 질문이 이미 묻습니다.투명한 NSView 서브 클래스 핸들 마우스 이벤트를 만드는 방법은 무엇입니까?

요약하자면, 탠 스피어보기 방법은 작동하지 않았습니다. 석영 이벤트 탭이 최고의 답변 인 것 같습니다.

다음은 TAPS 작업에 대한 힌트입니다.

  1. 탭을 만듭니다 CGEventTapCreate.
    a) 위치 (첫 번째) 매개 변수의 경우 아마도 사용하고 싶을 것입니다. kCGSessionEventTap.
    b) 배치 (두 번째) 매개 변수의 경우 아마도 원할 것입니다. kCGHeadInsertEventTap.
    c) 이벤트 마스크 매개 변수의 경우 시도해보십시오 (1 << kCGEventMouseMoved).

  2. 런 루프 소스를 만듭니다 CFMachPortCreateRunLoopSource, 이벤트 전달을 두 번째 매개 변수로 탭합니다.

  3. 런 루프 소스를 런 루프에 추가하십시오. 메인 런 루프에 추가를 원한다고 가정하면 다음을 수행하십시오.CFRunLoopAddSource(CFRunLoopGetMain(), sourceFromStep2, kCFRunLoopDefaultMode);

  4. 이벤트 탭을 활성화하십시오 CGEventTapEnable

마우스가 어디에 있든 추적하려면 cgeventtap을 원합니다. 코코아 등가는 없습니다. 응용 프로그램에서 추적하려면 왜 자신이 더 철저하게 그렇게 할 수 없는지 설명해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top