Auswählen von Paketberichterstattungs-Modi bei Multitouch-Geräten
Ab Windows 8 wird die Meldung von Multi-Touch-Daten an das System auf zwei Arten unterstützt: Parallelmodus oder Hybridmodus. Der vom Hersteller bereitgestellte HID-Berichtdeskriptor unterscheidet sich je nach ausgewähltem Modus.
Hinweis Der serielle Modus wird nur von Legacygeräten ausgewählt. Bei allen neuen Geräten, die den seriellen Modus verwenden, schlägt ab Windows 8 die Zertifizierung fehl.
Parallelmodus
Im Parallelmodus melden Geräte alle Kontaktinformationen in einem einzelnen Paket. Jeder physische Kontakt wird durch eine logische Sammlung dargestellt, die in die Sammlung auf oberster Ebene eingebettet ist. Diese logische Sammlung enthält alle Verwendungen, die das Gerät für die einzelnen Kontakte unterstützt (z. B. X, Y und Druck). Wenn Sie den Parallelmodus nutzen, muss jede der logischen Sammlungen identisch sein. Da das Gerät im Allgemeinen weniger Kontakte als das Maximum meldet, sollte die Anzahl der Kontakte, die in einem parallelen Paket gemeldet werden, entweder in der verwendeten Kontaktanzahl kommuniziert werden, oder indem NULL-Werte für alle ungültigen Kontakte in einem Paket festgelegt werden.
Stellen Sie sich z. B. ein Gerät vor, das drei Kontakte unterstützt. Wenn ein Benutzer nur zwei Finger auf dem Digitalisierer hat, enthält das parallele Paket nur zwei gültige Kontaktdaten in einem Bericht, der Daten für drei Kontakte enthalten kann. In diesem Fall sollte die „Kontaktanzahl“ auf 2 festgelegt werden, damit die Clientanwendung weiß, dass alle Informationen zu mehr als zwei Kontakten ungültig sind.
Alternativ kann das Gerät die Werte der Kontaktnutzungen über den zweiten Eintrag hinaus auf NULL-Werte festlegen. In Anbetracht des Aufwands für die Unterstützung und Meldung von NULL-Werten wird die Verwendung der tatsächlichen Anzahl empfohlen.
Ein Nachteil beim Melden mehrerer Kontakte in einem Paket besteht darin, dass jedes Mal, wenn weniger Kontakte gemeldet werden als die maximale Anzahl möglicher Kontakte, Speicherplatz pro Paket verschwendet wird. Geräte können den Hybridmodus verwenden, um diese Ineffizienz zu verringern.
Hybridmodus
Im Hybridmodus ist die Anzahl der Kontakte, die in einer Meldung enthalten sein können, kleiner als die maximale Anzahl von Kontakten, die das Gerät unterstützt. Ein Gerät, das beispielsweise maximal 48 gleichzeitige physische Kontakte unterstützt, kann seine Sammlung auf oberster Ebene zur gleichzeitigen Meldung von maximal 12 Kontakten einrichten. Bei 48 Kontaktpunkten kann das Gerät diese in 4 serielle Meldungen unterteilen, die jeweils 12 Kontakte enthalten.
Wenn ein Gerät auf diese Weise Daten liefert, muss der Wert für die Kontaktanzahl im ersten Bericht die Gesamtzahl der Kontakte widerspiegeln, die in den Hybridberichten geliefert werden. Die anderen seriellen Berichte sollten eine Kontaktanzahl von 0 haben. Im vorherigen Beispiel hat die verwendete Kontaktanzahl im ersten Bericht einen Wert von 48, während die letzten drei Berichte eine verwendete Kontaktanzahl von 0 haben. Aufgrund dieses Datenübermittlungsprotokolls muss die tatsächliche verwendete Anzahl im Eingabebericht des Berichtsdeskriptors für das Gerät gegeben sein.
NULL-Werte
NULL-Werte sollten wie in der HID-Spezifikation beschrieben angegeben werden. Das NULL-Bit muss für alle Hauptelemente im Berichtsdeskriptor festgelegt werden. Beachten Sie, dass ein Gerät entweder die Kontaktanzahlnutzung oder NULL-Werte verwenden kann, um dem Host die tatsächliche Anzahl gültiger Kontakte in einem Paket zu melden.
Kontakte in einem Bericht
Beim Senden von Daten im Hybrid- oder Parallelmodus muss ein Kontakt, der in einem Bericht übermittelt wird, in allen nachfolgenden Berichten übermittelt werden, bis er vom Bildschirm entfernt wird. Wird Zeit benötigt, um hinreichend festzustellen, ob der Kontakt von der Oberfläche abgehoben wurde, muss das Gerät die letzte bekannte Position des Kontakts melden und dann in einer nachfolgenden Meldung den Zustand „UP“ des Kontakts liefern. Geräte sollten keinen Bericht ohne die Informationen für diesen Kontakt senden, während sie versuchen, den aktuellen Zustand zu ermitteln.