"클립보드는 유저 거지 네 거 아냐. 붙여넣으려고 빌렸으면, 발견한 그대로 돌려놔."
붙여넣기 발판엔 빚이 있어
클립보드 + Cmd+V 발판은 삽입의 일꾼이지만 남의 것을 써. 유저의 클립보드 말이야. Firekeeper 가 받아쓰기를 붙여넣으려고 클립보드에 쓰는 순간, 유저가 복사해 뒀던 게 뭐든 짓밟히는 거야. URL 이든 문단이든 이미지든. 무례하고 당황스럽지. 그래서 붙여넣기 발판은 예의를 빚져. 지금 클립보드를 먼저 챙겨 두고, 전사를 쓰고, 붙여넣고, 붙여넣기가 자리 잡으면 원래 있던 걸 되돌려 놓는 거야.
챙기고, 붙여넣고, 되돌리고
1. 저장 = 현재 클립보드 내용 읽기 + 챙기기
2. 쓰기 = 전사를 클립보드에 넣기 (transient 표시)
3. 붙여넣기 = Cmd+V 합성
4. 정착 = 붙여넣기가 떨어지길 잠깐 기다리기
5. 복원 = 원본 내용 되돌리기
(그 사이 딴 게 썼으면 복원 건너뜀)
이걸 안전하게 만드는 미묘한 장치가 둘 있어. 가능한 데서는 Firekeeper 가 클립보드에 쓰는 걸 transient 로 표시해. 그래야 클립보드 히스토리 도구가 네 받아쓰기를 마치 네가 복사한 것처럼 기록하지 않아. 그리고 되돌리기 전에, 그 잠깐 사이에 딴 게 클립보드에 쓰지 않았는지 확인해. 썼으면 더 새 내용을 짓밟으면 안 되니까. 방금 복사한 걸 덮어쓰는 예의는 예의 없는 것보다 나빠.
보안 필드라는 선
이 절차가 통째로 꺼지는 자리가 하나 있어. 보안 필드야. 타깃이 비밀번호 필드면 Firekeeper 는 그 근처에서 클립보드를 읽지도 되돌리지도 않고, 삽입 자체를 거부해. 보안 맥락 근처에서 클립보드를 읽거나 전사를 거기 얹어 두는 건, 보이스 도구가 절대 하면 안 되는 딱 그런 짓이거든. 타깃 캡처에서 했던 보안 필드 확인이 여기까지 쭉 흘러 내려와. 삽입만 막는 게 아니라 클립보드 처리까지 막는 거야.