응답 사이 화면이 바뀌면 좌표는 낡는다
모델이 1000×1000 같은 정규화 그리드로 준 위치를 실제 화면 크기에 맞춰 변환해야 합니다. macOS의 logical pixel과 physical pixel, Retina 배율, 외부 모니터의 다른 DPI와 좌표 원점이 섞이면 오차가 생깁니다. 메뉴바, Dock과 화면 회전도 고려해야 합니다.
더 큰 문제는 시간입니다. 캡처 뒤 2~3초 동안 사용자가 스크롤하거나 창을 옮기면 정확했던 위치도 틀립니다. 응답 시점에 화면이 같은지 비교하고, 달라졌다면 다시 캡처하거나 힌트를 무효화해야 합니다. 좌표 정확도보다 잘못된 힌트를 표시하지 않는 조건이 먼저입니다.
좌표 변환은 캡처 영역부터 고정해야 한다
예를 들어 모델이 (0.8, 0.2)를 반환했다고 해도 이것이 전체 데스크톱, 현재 모니터, 선택 창 가운데 어느 영역을 기준으로 한 값인지 모르면 화면 위치를 복원할 수 없습니다. 캡처 요청마다 화면 식별자, 캡처 사각형, 배율과 당시 창 위치를 함께 저장하고 응답에도 같은 요청 식별자를 붙여야 합니다. 단순히 현재 화면 너비와 높이를 곱하는 구현은 창이 다른 모니터로 옮겨졌을 때 조용히 틀릴 수 있습니다.
| 확인 항목 | 정상 조건 | 실패했을 때의 처리 |
|---|
| 캡처 영역 | 모델 입력과 오버레이가 같은 화면, 창을 가리킴 | 힌트를 버리고 다시 캡처 |
| 픽셀 배율 | 논리 좌표와 실제 캡처 픽셀의 비율이 기록됨 | 모니터별 보정값 재계산 |
| 화면 상태 | 요청 뒤 창 위치, 스크롤, 해상도가 바뀌지 않음 | 결과 표시 중단 |
| 표시 대상 | 좌표 주변의 UI 특징이 응답 설명과 일치함 | 사용자에게 재질문 요구 |
정확도 시험도 버튼을 한 번 맞히는 데 그치면 안 됩니다. 기본 디스플레이와 외부 디스플레이, 서로 다른 배율, 창 모드와 전체 화면, 메뉴바 위치를 나눠 목표점과 표시점 사이의 픽셀 오차를 기록해야 합니다. 평균만 보면 큰 오차가 가려지므로 중앙값과 상위 오차, 힌트를 취소한 비율을 함께 봅니다.
stale screen을 감지하지 못하면 설명도 위험해진다
캡처한 화면에 요청 ID와 간단한 상태 지문을 붙이고, 응답 직전에 같은 영역을 다시 확인하는 방식이 현실적입니다. 완전한 이미지 일치는 커서 깜박임이나 애니메이션에도 깨질 수 있으므로 창의 위치, 크기, 활성 앱, 스크롤처럼 좌표에 영향을 주는 상태를 우선 비교합니다. 상태가 달라졌으면 오래된 좌표를 흐리게 남겨 두지 말고 즉시 폐기해야 합니다.
가령 사용자가 “내보내기 버튼이 어디야?”라고 묻고 기다리는 사이 설정 창을 닫았다고 합시다. 이전 화면의 오른쪽 아래 좌표를 새 화면에 표시하면 전혀 다른 삭제 버튼을 가리킬 수 있습니다. 실제 클릭이 사람에게 남아 있어도 시각적 안내는 강한 확신을 주므로, 불확실한 결과를 표시하지 않는 것이 단순한 경고 문구보다 중요합니다.