iPhone의 탭은 어떻게 Mac의 클릭이 될까
클릭 하나를 보내는 것은 쉽습니다. 나쁜 연결에서 수천 개를 순서대로, 커서가 늦지 않게 보내는 데서 원격 제어가 흥미로워집니다.
위치는 픽셀이 아니라 비율입니다
화면을 터치하면 iPhone은 “픽셀 812, 640”을 보내지 않습니다. 표시 중인 소스를 기준으로 각 축에서 0과 1 사이의 점을 보냅니다. Mac은 이를 캡처 중인 디스플레이나 창의 실제 좌표로 바꿉니다. 화면을 맞춤으로 보든 확대해서 보든, 세로든 가로든, Retina 패널이든 iPhone 모양의 가상 디스플레이든 탭이 올바른 자리에 닿는 이유입니다. 양쪽이 해상도를 합의할 필요가 없습니다.
모든 메시지가 같지는 않습니다
입력은 암호화된 제어 연결에서 작은 JSON 명령으로 이동하며, 앱은 종류마다 다르게 다룹니다.
- 마우스 이동은 최신 것만 남깁니다. 네트워크가 멈춘 동안 이동 세 개가 쌓이면 앞의 둘은 쓸모가 없습니다. 가장 새것이 나머지를 대체하며, 이동은 초당 약 60회로 제한됩니다.
- 스크롤은 합산됩니다. 함께 쌓인 스크롤 이벤트 두 개는 합계를 가진 이벤트 하나가 되므로 이동 거리가 사라지지 않습니다.
- 클릭과 키는 버려지지도, 순서가 바뀌지도 않습니다. 마우스 누름보다 마우스 뗌이 먼저 도착하면 눈에 보이는 버그가 됩니다.
이 작은 정책이, 미끄러지듯 움직이는 커서와 끊김 뒤에 휘청거리는 커서를 가르는 차이의 대부분입니다. 또한 나쁜 연결이 덜 부드러운 포인터로 나타날 뿐 엉뚱한 동작으로는 이어지지 않는다는 뜻이기도 합니다.
키는 macOS 키 코드입니다
키 입력은 macOS 가상 키 코드와, Shift, Control, Option, Command를 나타내는 보조 키 비트로 이루어집니다. Mac 앱은 이를 실제 키보드 이벤트로 바꿔 시스템에 게시하며, 그래서 손쉬운 사용 권한이 필요합니다. 단축키는 지금 쓰는 앱을 따라갑니다. 위 패널은 고정된 목록이 아니라 앞에 있는 편집기의 명령을 보여 줍니다.
키가 물리 키보드처럼 동작하게 만드는 데는 뜻밖의 모서리가 있습니다. 실제 화살표 키에는 추가 플래그 두 개, 즉 기능 플래그와 숫자 패드 플래그가 붙는데, 단순하게 합성한 이벤트에는 이것이 빠집니다. 이 플래그가 없으면 올바른 키 코드가 도착했는데도 Control과 위쪽 화살표가 Mission Control을 열지 않고 Mac에서 아무 일도 하지 않았습니다. Peering은 이제 실제 키보드처럼 두 플래그를 모두 설정합니다.
텍스트는 키 입력이 아닙니다
이모지, 악센트, 라틴 문자가 아닌 문자는 키 코드에 대응하지 않습니다. 이런 경우 iPhone은 문자 자체를 텍스트로 보내고, Mac이 그것을 입력합니다. 키보드가 모든 언어에서 동작하는 이유이자, 이 모드에서 일부 Mac 단축키가 동작하지 않는 이유입니다. 이는 앱이 설정에서 바꿀 수 있게 해 둔 절충입니다.
동기화 유지
iPhone은 1초마다 Mac에 핑을 보내고, Mac은 그 핑을 그대로 되돌려 답하며, 이것이 실시간 지연 측정값을 겸합니다. iPhone이 백그라운드로 가면 먼저 그 사실을 알립니다. iOS는 연결을 닫지 않고도 앱을 멈출 수 있으며, 그러면 Mac은 앱이 돌아올 때까지 영상 전송을 멈춥니다. 세션을 관찰 전용으로 설정할 수도 있으며, 이 경우 화면은 계속 흐르는 동안 Mac이 입력을 무시합니다.
이 순환의 반대쪽은 화면이 iPhone에 닿는 방법입니다. 둘이 함께 전체가 얼마나 민첩하게 느껴지는지를 결정합니다.
자주 묻는 질문
Peering은 이모지와 영어가 아닌 키보드를 지원하나요?
네. 키 입력이 아닌 텍스트는 문자로 보내져 Mac에서 입력되므로, 이모지와 모든 언어가 동작합니다. Mac 단축키는 키 코드를 보내는 모드에서만 전달됩니다.
연결이 약해도 커서가 부드럽게 움직이는 이유는 무엇인가요?
마우스 이동은 합쳐져서 최신 위치만 남고, 스크롤은 합산됩니다. 클릭과 키는 항상 순서대로 전달됩니다.