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