Peering

Peering / Blog

Come un tocco sul tuo iPhone diventa un clic sul tuo Mac

Inviare un clic è facile. Inviarne migliaia su una connessione scadente, in ordine, senza far ritardare il cursore, è la parte interessante del controllo remoto.

Le posizioni sono frazioni, non pixel

Quando tocchi l'immagine, il telefono non invia "pixel 812, 640". Invia un punto tra 0 e 1 su ciascun asse, relativo alla sorgente mostrata. Il Mac lo trasforma in coordinate reali per il display o la finestra che sta catturando. Per questo un tocco cade nel punto giusto sia che l'immagine sia adattata allo schermo o ingrandita, in verticale o in orizzontale, su un pannello Retina o su un display virtuale con la forma del telefono. Nessuno dei due lati deve concordare una risoluzione.

Non tutti i messaggi sono uguali

L'input viaggia come piccoli comandi JSON sulla connessione di controllo cifrata, e l'app tratta ogni tipo in modo diverso:

Questa piccola regola è gran parte della differenza tra un cursore che scivola e uno che scatta dopo un intoppo. Significa anche che una connessione scadente degrada in un puntatore meno fluido e mai in un'azione sbagliata.

Il pannello delle scorciatoie di Peering su iPhone con le scorciatoie di Visual Studio Code sopra l'immagine del Mac.
Un pulsante di scorciatoia invia gli stessi eventi tasto di una tastiera, con i modificatori giusti.

I tasti sono codici tasto di macOS

La pressione di un tasto è un codice tasto virtuale di macOS più i bit dei modificatori per maiuscole, controllo, opzione e comando. L'app per Mac lo converte in un vero evento di tastiera e lo invia al sistema, ed è per questo che richiede l'autorizzazione Accessibilità. Le scorciatoie seguono l'app in uso: il pannello qui sopra mostra i comandi dell'editor in primo piano, non un elenco fisso.

Far comportare i tasti come una tastiera fisica ha insidie sorprendenti. Un vero tasto freccia porta due flag aggiuntivi, un flag funzione e un flag tastierino numerico, che un evento sintetico ingenuo omette. Senza di essi, Controllo più freccia su non faceva nulla sul Mac invece di aprire Mission Control, anche se il codice tasto giusto era arrivato. Ora Peering imposta entrambi i flag, come fa una vera tastiera.

Il testo non è fatto di pressioni di tasti

Emoji, accenti e alfabeti non latini non corrispondono a codici tasto. Per quelli il telefono invia i caratteri stessi come testo, e il Mac li digita. Per questo la tastiera funziona in qualsiasi lingua, e per questo alcune scorciatoie del Mac non funzionano in quella modalità. È un compromesso che l'app ti permette di scegliere in Impostazioni.

Restare sincronizzati

Il telefono invia un ping al Mac ogni secondo, e il Mac risponde restituendo il ping, che serve anche come lettura della latenza in tempo reale. Se il telefono va in background, lo segnala prima, perché iOS può congelare un'app senza chiuderne le connessioni, e il Mac smette di inviargli video finché non torna. Una sessione può anche essere impostata in sola osservazione: in tal caso il Mac ignora l'input mentre l'immagine continua a scorrere.

L'altra direzione di questo ciclo è come l'immagine arriva al telefono. Insieme decidono quanto reattivo risulta il tutto.

Domande

Peering supporta emoji e tastiere non inglesi?

Sì. Il testo che non è la pressione di un tasto viene inviato come caratteri e digitato sul Mac, quindi emoji e qualsiasi lingua funzionano. Le scorciatoie del Mac vengono inviate solo nella modalità che invia i codici tasto.

Perché il cursore resta fluido con una connessione debole?

I movimenti del mouse vengono accorpati in modo da tenere solo l'ultima posizione, e gli scorrimenti vengono sommati. Clic e tasti vengono sempre consegnati in ordine.