본문 바로가기

카테고리 없음

Mac OS 마우스 클릭 좌표 파악 | Quartz Event Services

 

https://developer.apple.com/documentation/coregraphics/quartz_event_services

 

Quartz Event Services | Apple Developer Documentation

Provides features for managing event taps—filters for observing and altering the stream of low-level user input events in macOS.

developer.apple.com

 

Quartz Event Services

 

  • MacOS의 event tap을 관리하는 기능 제공
  • event tap은 low-level user input evets를 observing&altering 가능

 

#include <ApplicationServices/ApplicationServices.h>

 

 

https://developer.apple.com/documentation/coregraphics/1456102-cgeventtapisenabled/#working-with-event-taps

 

CGEventTapIsEnabled | Apple Developer Documentation

Returns a Boolean value indicating whether an event tap is enabled.

developer.apple.com

 

CGEventMask eventMask = CGEventMaskBit(kCGEventLeftMouseDown);

 

 

LeftMouseDown: 마우스 왼쪽 버튼 누를 때

LeftMouseUp: 마우스 왼쪽 버튼 뗄 때

 

다른 이벤트 타입은 이곳 참고 

 

CFMachPortRef eventTap = CGEventTapCreate(
    kCGHIDEventTap,           // HID 레벨에서 이벤트를 감시
    kCGHeadInsertEventTap,    // 이벤트 탭의 우선순위 지정
    kCGEventTapOptionListenOnly, // 이벤트를 수신만 함
    eventMask,                // 감지할 이벤트 유형 지정
    myCGEventCallback,        // 이벤트가 발생했을 때 호출되는 콜백 함수
    nullptr                      // 사용자 정의 데이터 없음
);

 

CGEventTapCreate: event tap 생성

 

parameter:

 

  • tap:
    • 새로운 이벤트 탭의 위치를 지정합니다. CGEventTapLocation에 나열된 상수 중 하나를 전달해야 합니다. 루트 사용자로 실행되는 프로세스만이 HID(Human Interface Device) 이벤트가 윈도우 서버에 들어가는 지점에서 이벤트 탭을 설정할 수 있습니다. 다른 사용자의 경우 이 함수는 NULL을 반환합니다.
  • place:
    • 활성 이벤트 탭 목록에서 새 이벤트 탭의 배치를 지정합니다. CGEventTapPlacement에 나열된 상수 중 하나를 전달해야 합니다.
  • options:
    • 새 이벤트 탭이 수동 리스너인지 또는 활성 필터인지를 지정하는 상수를 전달합니다.
  • eventsOfInterest:
    • 관찰할 이벤트 집합을 지정하는 비트 마스크(bit mask)입니다. 가능한 이벤트 목록은 CGEventType에서 확인할 수 있습니다. 만약 이벤트 탭이 eventsOfInterest 매개변수에서 지정된 이벤트를 모니터링할 수 없는 경우, 해당 비트가 마스크에서 제거됩니다. 결과적으로 마스크가 비어있게 되면 이 함수는 NULL을 반환합니다.
  • callback:
    • 이벤트가 발생했을 때 호출되는 콜백 함수입니다. 이 함수는 이벤트 탭이 소스로 추가된 런 루프에서 호출됩니다. 콜백의 스레드 안전성은 런 루프 환경에 따라 정의됩니다. 콜백 함수에 대해 자세히 알아보려면 CGEventTapCallBack을 참조하세요.
  • refcon:
    • 사용자 정의 데이터를 가리키는 포인터입니다. 이 포인터는 callback 매개변수에서 지정된 콜백 함수에 전달됩니다.

 

tapEvent