포스트

GestureClip (4) 복사가 안 될 때 뭐가 문제인지 구분하기

지난 글에서 오므리면 진짜 복사까지 되도록 만들었는데, 실제로 여러 번 써보니 “복사가 안 되는 것 같다”는 상황이 몇 가지 다른 이유로 겹쳐서 왔다. 원인을 하나씩 구분해서 정리했다.


어느 앱이 진짜 앞에 있었는지 확인하기

모니터를 여러 개 쓰다 보니, 화면에 사진 앱이 보이고 있어도 실제로 키보드 입력을 받는 앱은 다를 수 있다는 걸 알게 됐다. 마지막으로 클릭한 게 GestureClipMac 창이었다면, 눈에는 사진 앱이 보여도 Cmd+C는 GestureClipMac 자신한테 간다.

그래서 복사 명령을 보내기 전에 지금 실제로 활성화된 앱이 뭔지부터 확인하도록 했다. GestureClipMac 자신이면 애초에 기다릴 필요도 없이 바로 알 수 있다.

1
2
3
4
5
6
7
// MPCSender.swift (맥)
let frontmostApp = NSWorkspace.shared.frontmostApplication
if frontmostApp?.bundleIdentifier == Bundle.main.bundleIdentifier {
    // 생략
    lastResult = "GestureClipMac 창이 활성화돼 있어서 복사할 대상이 없습니다..."
    return
}

다른 앱이 맞는데도 복사가 확인되지 않으면, 이번엔 그 앱 이름을 그대로 메시지에 찍는다. “복사가 안 됨”이라는 뭉뚱그린 메시지 대신 “사진에서 복사가 확인되지 않았습니다”처럼 나오니, 포커스 문제인지 다른 문제인지 바로 구분이 된다. 이미지는 텍스트보다 클립보드에 쓰는 데 시간이 더 걸릴 수 있어서 기다리는 시간도 0.4초에서 1.5초로 늘렸다.


사진 앱은 마우스 클릭보다 화살표 키를 더 잘 알아듣는다

사진 앱에서 테스트하다가, 마우스로 사진을 클릭했을 때보다 화살표 키로 사진을 넘겼을 때 복사가 훨씬 잘 되는 걸 발견했다. CGEvent로 보내는 Cmd+C는 실제 키보드 입력과 똑같이 시스템에 들어가기 때문에, 이건 우리 코드 문제가 아니라 사진 앱 자체의 특성으로 보인다. 마우스로 클릭하는 것과 화살표 키로 옮기는 게 사진 앱 내부적으로는 “보고 있는 상태”와 “복사 대상으로 잡힌 상태”가 서로 다르게 처리되는 모양이다. 그래서 사진 앱에서 쓸 때는 화살표 키로 넘긴 다음 오므리는 쪽이 더 잘 된다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.