https://developer.apple.com/documentation/appkit/nsevent
"An object that contains information about an input action, such as a mouse click or a key press."
마우스 클릭 혹은 키 입력과 같은 입력 액션에 대한 정보를 포함하는 객체입니다.
class NSEvent : NSObject
AppKit
은 마우스 클릭과 같은 각 사용자 액션을 윈도우와 연결시키고, 윈도우에서 생성된 애플리케이션에 이벤트를 알립니다. NSEvent
객체는 커서의 위치가 어디에 있었는지 혹은 타이핑 된 문자와 같은 각 이벤트에 대한 관련 정보를 포함합니다. 애플리케이션이 이벤트를 받으면 이벤트들을 이벤트 큐라고 부르는 버퍼에 일시적으로 위치시킵니다. 애플리케이션이 이벤트를 처리할 준비가 되면 큐에서 하나씩 꺼냅니다.
NSEvent
객체는 태블릿 포인팅 및 태블릿 프록시미티 이벤트를 나타내기도 합니다. 태블릿 프록시미티 이벤트는 포인팅 기기가 태블릿의 프록시미티에 진입하거나 빠져나올 때 생성됩니다. NSTypeProximity
의 타입을 갖는 이벤트 객체 혹은 NSTabletProximityEventSubtype
의 마우스 하위타입이 대표적입니다. 태블릿 포인팅 이벤트는 포인팅 기기가 상태를 변경시킬 때 생성되며, 대표적으로 위치, 압력, 기울임과 같은 것이 있습니다. 이와 같은 이벤트 객체는 NSTypePoint
의 타입을 갖거나 NSTabletPointEventSubtype
의 마우스 하위타입을 갖습니다. AppKit
은 NSResponder
메소드인 tabletPoint(with:)
, tabletProximity(with:)
를 통해 태블릿 이벤트를 리스폰더 객체로 알려줍니다. 마우스 이벤트는 태블릿 데이터(이벤트 하위타입으로써)를 포함할 수 있으며, NSResponder
메소드인 mouseDown(with:)
, mouseDragged(with:)
, mouseUp(with:)
를 오버라이드 함으로써 이와 같은 이벤트를 처리할 수 있습니다.
NSEvent
객체는 터치 및 제스쳐 이벤트를 나타내기도 합니다. 더 제너릭 형태인 제스쳐 마스크처럼 magnify(핀치), 스와이프, 회전 마스크가 지원됩니다. touches(matching:in:)
메소드를 사용해서 뷰는 개별 터치 리스폰더 메소드(NSResponder
에서 정의된)를 오버라이드하지 않고도 제스쳐와 관련이 있는 터치 이벤트 모두를 가져올 수 있습니다.
압력 감지를 지원하는 기기의 경우 압력 이벤트가 지원됩니다. 이 이벤트는 NSEvent.EventType.pressure
이벤트 타입으로써 알려지고, NSresponder
에 있는 pressureChange(with:)
리스폰더 메소드 혹은 NSGestureRecognizer
에 있는 pressureChange(with:)
리스폰더 메소드를 호출합니다.
NSApplication
의 sendEvent(_:)
메소드를 통해 전달되는 특정 이벤트 타입에 대해 블록 객체에 있는 핸들러를 호출하는 애플리케이션 이벤트 모니터를 생성할 수도 있습니다. 애플리케이션에서 이벤트 정보를 알릴 로컬 모니터를 생성할 수 있고, 이들을 수정하거나 취소할 수 있습니다. 다른 애플리케이션에서 이벤트를 모니터링(이 이벤트를 바꿀 수는 없을지라도) 할 수 있도록 해주는 글로벌 이벤트 모니터 역시 생성할 수 있습니다. 더 많은 정보는 Monitoring Application Events를 살펴보시기 바랍니다.
연결되는 링크가 이 글과 같습니다
Monitoring Application Events
https://developer.apple.com/documentation/appkit/nsevent#1652040
키보드에서 기능 키로 예약되는 유니코드 캐릭터(0xF700–0xF8FF)입니다.
https://developer.apple.com/documentation/appkit/nsevent/1535851-function-key_unicodes
https://velog.io/@panther222128/Function-Key-Unicodes
즉각적인 시점의 특정 터치에 대한 스냅샷입니다.
https://developer.apple.com/documentation/appkit/nstouch
https://velog.io/@panther222128/NSTouch