"모든 앱에 텍스트를 넣는 한 방법은 없어. 네 방법이 있고, 각각이 포기할 때의 계획이 있어."
왜 방법이 아니라 사다리
macOS 엔 어디서나 되는 단일 안정적 '이 텍스트를 포커스된 필드에 삽입' 호출이 없어. 앱마다 다른 표면을 노출하니, 삽입은 사다리 야: 적용되는 최선 방법을 시도하고, 안 되면 다음 발판으로 내려가. 각 발판이 깨끗함을 넓이와 맞바꿔.
네 발판
1. AX 교체 제일 깨끗, 클립보드 안 건드림
| (앱이 안정적 편집 가능 값 + 범위를 노출하는 곳만)
v 실패 ->
2. 클립보드 + Cmd+V 대부분 앱과 큰 텍스트의 넓은 기본
| (클립보드 건드림; 저장/복원 예의 필요)
v 실패 / 적대적 ->
3. Unicode 키 이벤트 키 입력 합성, 클립보드 부작용 없음
| (느림; 짧은 텍스트나 붙여넣기-적대 타깃에 좋음)
v 실패 ->
4. 클립보드 전용 최후 수단: 복사 + "수동 붙여넣기" 알림
발판 1, AX 교체: 포커스된 요소가 편집 가능 값과 선택 범위를 안정적으로 노출하면, 접근성으로 교체 — 클립보드 안 건드림, 최대한 깨끗. 검증된 앱에서만 써. 발판 2, 클립보드 + 합성 Cmd+V: 큰 텍스트와 대부분 앱의 넓은 기본; 거의 어디서나 되지만 클립보드를 건드려, 그래서 다룰 클립보드 예의를 빚져. 발판 3, Unicode 키 이벤트: CGEvent 로 문자를 합성 — 클립보드 부작용 없지만 느림; 짧은 텍스트나 붙여넣기-적대 타깃에 좋음. 발판 4, 클립보드-전용: 아무것도 안 되면, 텍스트를 복사하고 붙여넣으라고 유저한테 말해.
실패 말고 격하해
사다리의 핵심은 삽입이 그냥 실패 하지 않고 — 격하한다는 거야. 최악의 경우(클립보드 + 알림)조차 유저를 텍스트에서 한 키 입력 거리에 두고, 뭐가 벌어졌는지 명확한 메시지를 줘. 단일-방법 설계랑 비교해: AX-전용 고르면 그걸 안 노출하는 모든 앱에서 깨지고; 붙여넣기-전용 고르면 타깃이 붙여넣기를 거부할 때 막혀. 사다리는 항상 되는 발판 하나 가 있다는 뜻이고, 유저는 늘 자기 단어를 갖게 돼.