So wird aus einem Tippen auf deinem iPhone ein Klick auf deinem Mac
Einen Klick zu senden ist leicht. Tausende davon über eine schlechte Verbindung zu senden, in der richtigen Reihenfolge und ohne dass der Cursor hinterherhinkt, ist der Punkt, an dem Fernsteuerung interessant wird.
Positionen sind Bruchteile, keine Pixel
Wenn du das Bild berührst, sendet das iPhone nicht „Pixel 812, 640“. Es sendet einen Punkt zwischen 0 und 1 auf jeder Achse, bezogen auf die gezeigte Quelle. Der Mac macht daraus echte Koordinaten für das Display oder Fenster, das er aufnimmt. Deshalb trifft ein Tippen die richtige Stelle, egal ob das Bild eingepasst oder gezoomt ist, im Hoch- oder Querformat, auf einem Retina-Display oder einem virtuellen Display in der Form des iPhones. Keine Seite muss sich auf eine Auflösung einigen.
Nicht jede Nachricht ist gleich
Eingaben reisen als kleine JSON-Befehle über die verschlüsselte Steuerverbindung, und die App behandelt jede Art anders:
- Mausbewegungen behalten nur die neueste. Stauen sich drei Bewegungen, während das Netzwerk stockt, sind die ersten beiden wertlos. Die neueste ersetzt sie, und Bewegungen sind auf etwa 60 pro Sekunde begrenzt.
- Scrollen addiert sich. Zwei Scroll-Ereignisse, die sich gemeinsam stauen, werden zu einem Ereignis mit der Summe, sodass keine Strecke verloren geht.
- Klicks und Tasten werden nie verworfen oder umsortiert. Ein Loslassen der Maustaste, das vor dem Drücken ankommt, wäre ein Fehler, den man sehen würde.
Diese kleine Regel macht den größten Teil des Unterschieds zwischen einem Cursor, der gleitet, und einem, der nach einem Hänger ruckelt. Sie sorgt auch dafür, dass eine schlechte Verbindung zu einem weniger flüssigen Zeiger führt und nie zu einer falschen Aktion.
Tasten sind macOS-Tastencodes
Ein Tastendruck ist ein virtueller macOS-Tastencode plus Modifikator-Bits für Umschalt, Control, Option und Befehl. Die Mac-App wandelt ihn in ein echtes Tastaturereignis um und schickt es ans System, weshalb sie die Berechtigung „Bedienungshilfen“ braucht. Kurzbefehle folgen der App, in der du bist: Das Feld oben zeigt die Befehle für den Editor im Vordergrund, keine feste Liste.
Tasten wie an einer echten Tastatur zu verhalten hat überraschende Ecken. Eine echte Pfeiltaste trägt zwei zusätzliche Flags, ein Funktions-Flag und ein Ziffernblock-Flag, die ein naives synthetisches Ereignis weglässt. Ohne sie tat Control plus Pfeil nach oben auf dem Mac nichts, statt Mission Control zu öffnen, obwohl der richtige Tastencode angekommen war. Peering setzt jetzt beide Flags, wie es eine echte Tastatur tut.
Text sind keine Tastendrücke
Emoji, Akzente und nicht lateinische Schriften lassen sich keinen Tastencodes zuordnen. Dafür sendet das iPhone die Zeichen selbst als Text, und der Mac tippt sie ein. Deshalb funktioniert die Tastatur in jeder Sprache, und deshalb funktionieren in diesem Modus einige Mac-Kurzbefehle nicht. Das ist ein Kompromiss, den du in den Einstellungen umschalten kannst.
Im Takt bleiben
Das iPhone pingt den Mac jede Sekunde, und der Mac antwortet, indem er den Ping zurückgibt, was zugleich als Live-Latenzmessung dient. Geht das iPhone in den Hintergrund, sagt es das vorher, weil iOS eine App einfrieren kann, ohne ihre Verbindungen zu schließen, und der Mac sendet dann kein Video mehr an das iPhone, bis es zurückkehrt. Eine Sitzung kann auch auf „nur beobachten“ gestellt werden, dann ignoriert der Mac Eingaben, während das Bild weiterläuft.
Die andere Richtung dieser Schleife ist wie das Bild zum iPhone kommt. Zusammen bestimmen beide, wie reaktionsschnell sich das Ganze anfühlt.
Fragen
Unterstützt Peering Emoji und nicht englische Tastaturen?
Ja. Text, der kein Tastendruck ist, wird als Zeichen gesendet und auf dem Mac getippt, sodass Emoji und jede Sprache funktionieren. Mac-Kurzbefehle werden nur in dem Modus gesendet, der Tastencodes sendet.
Warum bleibt der Cursor bei schwacher Verbindung flüssig?
Mausbewegungen werden zusammengefasst, sodass nur die neueste Position bleibt, und Scrollbewegungen werden addiert. Klicks und Tasten werden immer in der richtigen Reihenfolge zugestellt.