"억제 이벤트 탭은 기계가 만드는 모든 키 입력의 톨게이트야. 그 일을 정말 원하는지 아주 확실히 해."
요구사항
Firekeeper 기본 활성화는 맨 Fn 홀드 — 코드 조합 없이, 안 쓰는 키를 누르고 말하기. 사랑스러운 인터랙션이고 진짜 어색한 구현이야, 맨 모디파이어는 평범한 단축키가 아니니까. 평범한 단축키 API 엔 'Fn 눌림' 이벤트가 없어; 모디파이어는 플래그 변화로 자기를 알리고, 거기서 누르고-유지를 재구성해야 해.
솔깃한 틀린 도구
뻔한 답은 CGEventTap: 시스템 전역 이벤트 스트림에 앉아, 모든 키를 보고, 주장하는 걸 삼켜. 돼 — 그리고 네 앱을 기계가 만드는 모든 키 입력의 톨게이트로 만들어. 탭이 잘못 굴면, 네 앱이 깨지는 게 아니라; 타이핑 이 깨져, 어디서나. 가정이 아냐: 경쟁자의 억제 탭이 정확히 유저들 스페이스바를 먹은 거야. 위험 위에, 탭은 Input Monitoring 권한이 필요해 — 삽입에 이미 필요한 접근성 허가 위에 두 번째 무서운 프롬프트.
CGEventTap (거부됨): flagsChanged + keyState (선택됨):
모든 키 입력에 앉음 모디파이어 플래그 변화만 관찰
시스템 전역 억제 가능 아무 키도 못 삼킴
Input Monitoring 필요 이미 가진 접근성 신뢰를 탐
경쟁자 게 스페이스바 먹음 가로채지 않는 걸 못 먹음
선택된 경로
Firekeeper 는 대신 NSEvent flagsChanged 모니터를 보고, 플래그만으로 못 가리는 경우를 CGEventSource.keyState 로 구분해 — 특히 쌍둥이 모디파이어(다른 Command 키 같은)가 아직 눌려 있을 때 누름과 놓음을 구별하는 거. 앱이 삽입 위해 이미 쥔 접근성 신뢰로 작동하고, 새 권한 표면을 안 더하고, 구조적으로 키 입력을 못 삼켜, 애초에 스트림을 안 가로채니까. 같은 인터랙션, 폭발 반경의 일부.