Peering

Peering / Blog

Cómo un toque en tu iPhone se convierte en un clic en tu Mac

Enviar un clic es fácil. Enviar miles por una mala conexión, en orden y sin que el cursor se retrase, es donde el control remoto se vuelve interesante.

Las posiciones son fracciones, no píxeles

Cuando tocas la imagen, el teléfono no envía «píxel 812, 640». Envía un punto entre 0 y 1 en cada eje, relativo a la fuente que se muestra. El Mac lo convierte en coordenadas reales para la pantalla o la ventana que está capturando. Por eso un toque cae en el lugar correcto tanto si la imagen está ajustada a la pantalla como ampliada, en vertical o en horizontal, en un panel Retina o en una pantalla virtual con la forma del teléfono. Ninguno de los dos lados necesita acordar una resolución.

No todos los mensajes son iguales

La entrada viaja como pequeños comandos JSON por la conexión de control cifrada, y la app trata cada tipo de forma distinta:

Esa pequeña política es casi toda la diferencia entre un cursor que se desliza y uno que da tirones tras un bache. También significa que una mala conexión se traduce en un puntero menos fluido y nunca en una acción equivocada.

El panel de atajos de Peering en el iPhone, con atajos de Visual Studio Code sobre la imagen del Mac.
Un botón de atajo envía los mismos eventos de tecla que un teclado, con los modificadores correctos.

Las teclas son códigos de tecla de macOS

Una pulsación de tecla es un código de tecla virtual de macOS más bits modificadores para Mayús, Control, Opción y Comando. La app del Mac lo convierte en un evento de teclado real y lo publica en el sistema, por lo que necesita el permiso de Accesibilidad. Los atajos siguen a la app en la que estás: el panel de arriba muestra los comandos del editor que tienes delante, no una lista fija.

Conseguir que las teclas se comporten como un teclado físico tiene sorpresas. Una flecha real lleva dos indicadores extra, uno de función y otro de teclado numérico, que un evento sintético ingenuo omite. Sin ellos, Control y la flecha arriba no hacían nada en el Mac en lugar de abrir Mission Control, aunque el código de tecla correcto había llegado. Peering ahora activa ambos indicadores, como hace un teclado real.

El texto no son pulsaciones de teclas

Los emojis, los acentos y las escrituras no latinas no se corresponden con códigos de tecla. Para ellos el teléfono envía los propios caracteres como texto, y el Mac los escribe. Por eso el teclado funciona en cualquier idioma, y por eso algunos atajos del Mac no funcionan en ese modo. Es un compromiso que la app te deja cambiar en Ajustes.

Mantenerse sincronizados

El teléfono hace ping al Mac cada segundo, y el Mac responde devolviendo el ping, lo que sirve además como lectura de latencia en vivo. Si el teléfono pasa a segundo plano, lo avisa antes, porque iOS puede congelar una app sin cerrar sus conexiones, y el Mac deja de enviarle vídeo hasta que vuelva. Una sesión también puede ser solo de observación, en cuyo caso el Mac ignora la entrada mientras la imagen sigue fluyendo.

La otra dirección de este bucle es cómo llega la imagen al teléfono. Juntas deciden lo ágil que se siente todo.

Preguntas

¿Peering admite emojis y teclados que no son en inglés?

Sí. El texto que no es una pulsación de tecla se envía como caracteres y se escribe en el Mac, así que funcionan los emojis y cualquier idioma. Los atajos del Mac solo se envían en el modo que manda códigos de tecla.

¿Por qué el cursor sigue fluido con una conexión débil?

Los movimientos del ratón se agrupan para conservar solo la última posición, y los desplazamientos se suman. Los clics y las teclas siempre se entregan en orden.