Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Dokument wird die Protokollimplementierung für ein Haptic Pen-Gerät erläutert, das eine Verbindung mit einem kompatiblen Windows 11-Host herstellt. Dies schließt keine Anleitungen zu mechanischen Einschränkungen, elektrischen Einschränkungen oder Komponentenauswahl für die Generierung der haptischen Reaktion innerhalb des Stiftwandlers ein. Dieser Implementierungsleitfaden ist unabhängig vom Stiftprotokoll, das zwischen dem Stiftwandler und dem Stiftdigitierer verwendet wird. Eine Implementierung kann jedoch entscheiden, ein Stiftprotokoll mit einer Uplink-Funktion zu verwenden, mit der der Stiftdigitierer zusätzliche Parameter für den Stifttransduktor für die Modulierung der haptischen Reaktion bereitstellen kann.
Geräteklasse
Haptic Pen ist eine Erweiterung der Stift-Geräteklasse unter Windows. Dieser Implementierungsleitfaden fügt zum Implementierungshandbuch für Stift hinzu und konzentriert sich auf die Implementierung von Haptik innerhalb des Stifttransducers, sodass haptische Stifte zusätzlich zu den hier enthaltenen Anforderungen im Pen-Implementierungshandbuch entsprechen müssen.
Gerätebuskonnektivität
Der Haptic Pen verwendet die von Microsoft bereitgestellten Posteingangstreiber, um über Bluetooth eine Verbindung mit einem Windows-Host herzustellen.
Implementierung des Haptischen Stiftprotokolls
Ein gutes Verständnis des HID-Protokolls ist erforderlich, um die hier dargestellten Informationen verstehen zu können. Informationen zum HID-Protokoll finden Sie in den folgenden Ressourcen:
Windows enthält einen HID-Klassentreiber und den entsprechenden HID Bluetooth-fähigen Miniporttreiber, daher ist es nicht erforderlich, dass Miniporttreiber von Drittanbietern benötigt werden. Haptische Stiftgerätefirmware muss nur die in diesem Thema beschriebenen Verwendungen melden. Windows verwendet die Firmware und seine eigenen HID-Treiber, um das Gerät zu aktivieren und Windows-Anwendungen Zugriff auf das Gerät zu gewähren.
Ein Beispieldeskriptor wird unten im Abschnitt "Beispielberichtdeskriptoren" bereitgestellt.
Erforderliche HID-Auflistung der obersten Ebene
Ein Haptic Pen-Gerät sollte das HID-Protokoll auf einem Windows 10-System so verwenden, dass das Gerät eine Sammlung auf oberster Ebene bereitstellt, die als Digitalisierungs-/Eingabestift (Page 0x0D, Usage 0x20) angezeigt wird.
Eingabebericht zum Stiftdigisierer
Die Stiftdigitalisierer-Sammlung muss den Stiftidentifikator melden, der aus der Seriennummer des Wandlers und der Hersteller-ID des Wandlers besteht und in den Eingabemeldungen an das Betriebssystem übermittelt wird. Derselbe Eingabestiftbezeichner muss über die Eingabestiftsammlung gemeldet werden. Auf diese Weise kann das Betriebssystem die vom Digitalisierer generierte Stifteingabe mit dem Eingabestift korrelieren. Details zur Stiftimplementierungsanleitung finden Sie hier: Pen-Protokollimplementierung.
Seriennummer des Wandlers
Die Seriennummer des Wandlers ist ein eindeutiger persistenter Bezeichner für den Wandler, der im Stiftzubehör verwendet wird, das mit dem Stiftdigisierer kommuniziert. Dies muss 32 Bit sein und wird von dem Anbieter oder der Entität festgelegt, die durch die Hersteller-ID des Wandlers identifiziert wird. In Fällen, in denen die Seriennummer des Wandlers dem Digitalisierungsgerät nicht bekannt ist, weil das Stiftzubehör diesen Wert nicht unterstützt oder wenn die Übertragung nicht vollständig empfangen wurde, meldet das Digitalisierungsgerät 0 an den Host. Nullposition wird vom Host nicht unterstützt.
Seriennummer des Wandlers – Teil 2
Seriennummer des Wandlers – Teil 2 ermöglicht die Angabe zusätzlicher 32 Bits als Teil des eindeutigen und permanenten Bezeichners des in einem Stiftzubehör verwendeten Wandlers. In Fällen, in denen die Seriennummer des Wandlers – Teil 2 – dem Digitalisierer nicht bekannt ist, entweder weil das Stiftzubehör die Übertragung dieses Wertes nicht unterstützt oder weil die Übertragung nicht vollständig empfangen wurde, notiert der Digitalisierer 0 an den Host. Nullposition wird vom Host nicht unterstützt.
| Seite | ID | Hinweise |
|---|---|---|
| 0xD | 0x5B | Obligatorisch für Features, die von eindeutiger Stiftidentifikation abhängig sind (siehe unten) |
| 0xD | 0x6E | Optionale Erweiterung der Seriennummer um zusätzliche 32 Bits |
Hersteller-ID des Umformers
Die Hersteller-ID des Wandlers ist ein Feld für die Kommunikation des Herstellers des Wandlers, der in der Stiftzubehörkommunikation mit dem Stiftdigisierer verwendet wird. Dies ist erforderlich, um eine 2-Byte-USB-IF-zugewiesene Anbieter-ID entweder von dem Hersteller oder von dem IHV/OEM zu erhalten, das die Nutzung ihrer USB-IF-Anbieter-ID zu diesem Zweck autorisiert.
| Seite | ID | Hinweise |
|---|---|---|
| 0xD | 0x91 | Obligatorisch für Features, die von eindeutiger Stiftidentifikation abhängig sind (siehe unten) |
Features, die von eindeutiger Stiftidentifikation abhängig sind
Die Meldung der PenID ist obligatorisch, um Szenarien wie die Stifthaptik zu ermöglichen (notwendig für die Haptik-Funktionen in diesem Handbuch).
Es ist auch obligatorisch in Szenarien, in denen mehrere Stifte für das Freihandzeichnen verwendet werden. Beispiel:
- Whiteboard-App unter Windows unterstützt mehrere Stiftverwendungen, bei denen jeder Stift einem bestimmten Freihandtool zugeordnet werden kann
- Im Allgemeinen können Apps, die verschiedenen physischen Stiften Attribute oder Verhaltensweisen zuweisen möchten, auch wenn der Digitizer nur einen einzelnen Stift auf dem Bildschirm gleichzeitig unterstützt.
- Apps, die mehrere gleichzeitige Stifte auf unterstützten Digitalisierungsgebern nachverfolgen möchten
Haptischer Ausgabebericht
Wenn ein Stiftgerät haptisches Feedback unterstützt, kann es dem System und den Anwendungen ermöglichen, diese zu nutzen, indem eine haptische Feedbacksammlung (Page 0x0E, Usage 0x01) innerhalb des Eingabestifts TLC eingeschlossen wird. Weitere Informationen dazu, wie die HID-Spezifikation haptisches Feedback unterstützt, finden Sie auf der Ratifikationsseite zur Haptik der Spezifikation.
Der Host verwendet die folgenden Verwendungen in einem Ausgabebericht (über die haptische Feedbacksammlung), um dem Host das Ausgeben haptischer Feedbackereignisse auf das haptische Stiftgerät zu ermöglichen. Wenn ein Gerät eine haptische Feedbacksammlung verfügbar macht, sind einige Verwendungen obligatorisch, um die Unterstützung von vom Host initiiertem haptischem Feedback zu ermöglichen.
| Mitglied | Description | Seite | ID | Obligatorisch/Optional |
|---|---|---|---|---|
| Wellenformliste | Sortierte Liste der haptischen Wellenformen, die vom Gerät unterstützt werden | 0x0E | 0x10 | Obligatorisch. |
| Dauerliste | Sortierte Liste der Dauern für Wellenformen in der Wellenformliste | 0x0E | 0x11 | Obligatorisch. |
| Automatischer Trigger | Wellenform zum automatischen Auslösen nach Ermessen des Geräts | 0x0E | 0x20 | Obligatorisch. |
| Zugeordnetes Steuerelement automatisch auslösen | HID-Verwendung des Steuerelements im Zusammenhang mit haptischem Feedback | 0x0E | 0x22 | Obligatorisch. |
| Intensität | Ausgabe - Intensität der manuellen Triggerwellenform als Prozentsatz | 0x0E | 0x23 | Wahlfrei |
| Zahl der Wiederholungen | Ausgabe – Anzahl der Wiederholungen der manuellen Trigger-Wellenform nach der ersten Wiedergabe | 0x0E | 0x24 | Wahlfrei |
| Wiederholungszeitraum | Ausgabe – Dauer der Wartezeit vor dem erneuten Auslösen des manuellen Auslösers bei der Wiederholung | 0x0E | 0x25 | Wahlfrei |
| Wellenform-Abschneidzeit | Max. Zeit, die ein manuelles Auslöserwellenformular wiedergeben kann, bevor es abgeschnitten wird | 0x0E | 0x28 | Wahlfrei |
Wellenformliste
Die Verwendung der Wellenformliste stellt eine Sammlung der HID-Nutzungen der unterstützten Wellenformen dar, geordnet nach Ordnungszahlen. Die vordefinierten Haptikwellenformen werden in der HID-Spezifikation definiert. Bei haptischen Stiftgeräten können diese Wellenformen als zwei Segmente klassifiziert werden, die unterschiedlichen Szenarien entsprechen:
- WAVEFORM_*CONTINUOUS - Tintenbasiertes Feedback zur Simulation verschiedener Texturen, während der Benutzer aktiv mit verschiedenen Werkzeugen wie Stift, Bleistift usw. zeichnet.
- WAVEFORM_* – Diskretes, nicht fortlaufendes, interaktionsbasiertes Feedback, für das ein Benutzer eine benutzereingabegesteuerte Aufgabe ausführt, z. B. das Zeigen auf eine Schaltfläche, das Klicken auf eine deaktivierte Schaltfläche und die erfolgreiche Freihandzeichenerkennung.
Die vollständige Liste der für haptischen Stiftgeräte unterstützten Waveforms finden Sie unten:
| Wellenform | Description | Seite | ID | Obligatorisch/Optional |
|---|---|---|---|---|
| WAVEFORM_NONE | No-op. Sollte sich nicht auf den Spielzustand laufender Wellenformen auswirken | 0x0E | 0x1001 | Obligatorisch. |
| WAVEFORM_STOP | Beendet die Wiedergabe fortlaufender Wellenformen. | 0x0E | 0x1002 | Obligatorisch. |
| Wellenform_Klick | Erstellt ein kurzes "Klick"-Feedback. Standardvorgabe, wenn die Interaktionsfeedback-Waveform, die von der App ausgewählt wurde, vom haptischen Stift nicht unterstützt wird. | 0x0E | 0x1003 | Obligatorisch. |
| WAVEFORM_INKCONTINUOUS | Simuliert das Schreibgefühl mit einem echten Kugelschreiber. Standardmäßiger Fallback, wenn eine Tintenwellenform nicht von einem haptischen Stift unterstützt wird. | 0x0E | 0x100B | Obligatorisch. |
| WELLENFORM_ERFOLG | Starkes haptisches Signal, um den Benutzer zu benachrichtigen, dass eine Aktion erfolgreich war | 0x0E | 0x1009 | Wahlfrei |
| WAVEFORM_ERROR | Starkes haptisches Signal, um den Benutzer zu benachrichtigen, dass eine Aktion fehlgeschlagen ist oder ein Fehler aufgetreten ist. | 0x0E | 0x100A | Wahlfrei |
| WAVEFORM_HOVER | Haptisches Signal, wenn der Benutzer mit einem haptischen Stift über ein interaktives UI-Element schwebt | 0x0E | 0x1008 | Wahlfrei |
| WAVEFORM_PRESS | Haptisches Signal für das Drücken eines interaktiven UI-Elements in einer inkrementellen Aktion (siehe Release) | 0x0E | 0x1006 | Wahlfrei |
| Wellenform-Freigabe | Haptisches Signal beim Freigeben eines interaktiven UI-Elements in einer inkrementellen Aktion (siehe Drücken) | 0x0E | 0x1007 | Wahlfrei |
| WAVEFORM_PENCILCONTINUOUS | Ein kontinuierliches haptisches Signal, wenn der Benutzer den Stift als Zeichenwerkzeug auswählt. | 0x0E | 0x100C | Wahlfrei |
| WAVEFORM_MARKERCONTINUOUS | Kontinuierliches haptisches Signal, wenn der Benutzer den Marker als Eingabestift auswählt. | 0x0E | 0x100D | Wahlfrei |
| WAVEFORM_CHISELMARKERCONTINUOUS | Kontinuierliches haptisches Signal, wenn der Benutzer Keil- oder Textmarker als Zeichenwerkzeug auswählt | 0x0E | 0x100E | Wahlfrei |
| WELLENFORM_PINSELKONTINUIERLICH | Kontinuierliches haptisches Signal, wenn der Benutzer Pinsel als Zeichentool auswählt | 0x0E | 0x100F | Wahlfrei |
| WELLENFORM_RADIERGUMMIKONTINUIERLICH | Kontinuierliches haptisches Signal, wenn der Benutzer den Radiergummi als Zeichenwerkzeug auswählt. | 0x0E | 0x1010 | Wahlfrei |
| WAVEFORM_SPARKLECONTINUOUS | Kontinuierliches haptisches Signal für spezielle Tintengeräte wie einen mehrfarbigen Pinsel | 0x0E | 0x1011 | Wahlfrei |
Hinweis
Es wird zwar nicht benötigt, aber es wird empfohlen, auch die anderen aufgezählten Wellenformen zu implementieren, um eine umfassendere Benutzererfahrung zu ermöglichen. Insbesondere werden WAVEFORM_PRESS und WAVEFORM_RELEASE dringend empfohlen, da sie wertvolles Interaktionsfeedback liefern.
Sowohl WAVEFORM_NONE als auch WAVEFORM_STOP sind für alle HID-kompatiblen Haptikgeräte erforderlich. Ordinale 1 und 2 werden automatisch auf WAVEFORM_NONE und WAVEFORM_STOP festgelegt. Sie müssen nicht in der Waveform-Liste oder Dauerliste deklariert werden. Die Waveform-Liste deklariert unterstützte Wellenformen anhand des physischen Minimums und maximums jeder Ordnungszahl in der Liste.
Dauerliste
Die Verwendung der Dauerliste stellt eine Auflistung der Dauer für die unterstützten Wellenformen in der Waveform-Liste dar, sortiert mithilfe von Ordnungszahlen. Die Einheit für die Wellenformdauer ist Millisekunden, und die Dauer muss ein positiver Wert ungleich Null für jede nicht fortlaufende Wellenform sein. Wenn eine Wellenform kontinuierlich ist (wird abgespielt, bis sie vom Host gestoppt wird oder die Wellenform-Abschaltzeit überschritten wird), wird ihre Dauer als Null definiert.
WAVEFORM_NONE und WAVEFORM_STOP werden davon ausgegangen, dass die Dauer null ist. Sie müssen nicht in der Dauerliste deklariert werden.
Intensität
Die Intensitätsauslastung stellt den Prozentsatz der maximalen Intensität dar, der auf eine Wellenform angewendet werden soll. Dieser Wert sollte zwischen 0 und 100 Prozent variieren. 100 Prozent deuten darauf hin, dass Wellenformen vom Gerät mit ihrer maximalen Stärke ausgelöst werden, und 0 Prozent gibt an, dass der haptische Wandler nicht aktiviert ist.
Zahl der Wiederholungen
Die Verwendung der Wiederholungsanzahl gibt an, wie oft eine Wellenform wiederholt wird. Eine Wiederholungsanzahl von Null gibt an, dass die manuelle Triggerwellenform nur ein mal wiedergegeben werden soll (keine Wiederholung). Wenn die Wellenform-Abschneidzeit überschritten wurde, wird erwartet, dass unvollständige Wiederholungen ignoriert werden.
Wiederholungszeitraum
Die Verwendung der Retrigger-Periode stellt die Zeitspanne dar, die das Gerät warten muss, bevor eine manuelle Triggerwellenform in einem Ausgabebericht wiederholt wird, entsprechend dem von der Wiederholungsanzahl angegebenen Wert. Die Einheiten für diesen Wert sind Millisekunden. Wenn die Wiederholungsperiode kleiner als die Dauer der abgespielten Wellenform ist, sollte die Wellenform angehalten und neu gestartet werden, zum Zeitpunkt, der durch die Wiederholungsperiode angegeben wird.
Wellenform-Abschneidzeit
Die Nutzung der Waveform-Abschneidezeit stellt die maximale Zeitspanne dar, die das Gerät ermöglicht, dass eine manuelle Trigger-Wellenform wiederholt wird, bevor die Wiedergabe beendet wird. Dies ist ein konstanter Wert für das Gerät und enthält sowohl fortlaufende Wellenformen ohne festgelegte Dauer als auch Wellenformen mit diskreten Daueren, die so eingestellt sind, dass sie viele Male wiederholt werden. Die Einheiten für diesen Wert sind Millisekunden.
Haptischer Ausgabebericht
Der Host verwendet die folgenden Nutzungen in einem Ausgabebericht, um haptische Feedbackereignisse an das Haptic Pen-Gerät auszugeben. Einige Verwendungen sind für die Kompatibilität mit der Windows-Hostimplementierung obligatorisch.
| Mitglied | Description | Seite | ID | Obligatorisch/Optional |
|---|---|---|---|---|
| Manueller Trigger | Waveform zum Auslösen als expliziter Befehl vom Host | 0x0E | 0x21 | Obligatorisch. |
| Intensität | Intensität der manuellen Triggerwellenform als Prozentsatz | 0x0E | 0x23 | Obligatorisch. |
| Zahl der Wiederholungen | Anzahl der Wiedergaben der manuellen Triggerwellenform nach der erstmaligen Wiedergabe | 0x0E | 0x24 | Wahlfrei |
| Wiederholungszeitraum | Dauer des Wartens vor dem erneuten Auslösen des manuellen Triggers beim Wiederholen | 0x0E | 0x25 | Wahlfrei |
Manueller Trigger
Die Verwendung des manuellen Triggers stellt eine unterstützte Waveform-Nutzung aus der Waveform-Liste dar, die vom Host angefordert wurde, um abgespielt zu werden. Wenn ein Ausgabebericht, der einen anderen manuellen Trigger als WAVEFORM_NONE enthält, an das Gerät gesendet wird, sollte es sofort mit der Wiedergabe der angegebenen Wellenform beginnen, wobei die zusätzlichen Eigenschaften im Ausgabebericht enthalten sind (Intensität, Wiederholungsanzahl, Wiederholungsperiode). Wenn ein Ausgabebericht einen manuellen Trigger von WAVEFORM_STOP enthält, sollte jede fortlaufende Waveformwiedergabe beendet werden.
Informationen zur Intensität, Wiederholungsanzahl und Wiederholungszeitraum finden Sie im vorherigen Abschnitt im Hinblick auf den Ausgabefunktionsbericht.
Starten und Stoppen des haptischen Feedbacks
Das flussdiagramm unten beschreibt, wann die haptischen Signale des Stifts konfiguriert, gelöscht, gestartet und angehalten werden sollen.
Die unten aufgeführten haptischen Zustände sind:
- Spielen: Der Stift spielt aktiv die haptische Wellenform
- Angehalten: Der Stift ist mit einer Wellenform konfiguriert, spielt sie jedoch nicht aktiv ab.
- Beendet: Der Stift ist nicht mit einer Wellenform konfiguriert und es wird derzeit nichts abgespielt.
Für den Stiftstatus im Hinblick auf den Digitalisierer lesen Sie bitte Windows Pen States.
Hinweis
Wenn der Stift außerhalb der Reichweite ist, wird empfohlen, aber es ist nicht erforderlich, die haptische Konfiguration zu löschen. Dies wird im folgenden Diagramm durch die zwei alternativen Pfade dargestellt, die den Zustand "Stift: Im Bereich; Haptik: Angehalten" verlassen, wenn der Stift außerhalb des Bereichs ist.
Hinweis
Der Host kann jederzeit verlangen, dass eine nicht fortlaufende Wellenform wiedergegeben wird. In diesem Fall sollte der Stift es abspielen und dann in den Zustand zurückkehren, in dem er zuvor war.
Hinweis
Der Host darf nur fortlaufende Wellenformen konfigurieren. Diskrete/nicht fortlaufende Wellenformen dürfen nur manuell ausgelöst werden.
Tastatursammlung (optional)
Eine optionale Funktion, um die Berichterstellung über letzte Schaltflächenklicks an den Host über HID-Tastaturberichte zu aktivieren.
Ein kompatibles Gerät soll drei unterschiedliche Tastaturkombinationen melden, die drei verschiedenen Tastenaktionen entsprechen, über ein HID-Bluetooth-Tastaturgerät, das dem Host zur Verfügung gestellt wird. Die Aktionen und die entsprechenden Tastaturkombinationen werden unten beschrieben:
| Button-Aktion | Tastenkombination |
|---|---|
| Einzelner Klick | WIN+F20 |
| Doppelklicken | WIN+F19 |
| Drücken und Halten | Win+F18 |
Implementierung der Bluetooth-Schaltfläche
Um eine End-Bluetooth-Taste zu implementieren, meldet das Gerät 3 verschiedene Tastaturkombinationen, die 3 verschiedenen Tastenaktionen über ein HID Bluetooth LE-Tastaturgerät entsprechen, das dem Host verfügbar gemacht wird. Die Aktionen und die entsprechenden Tastaturkombinationen werden unten beschrieben:
| Bluetooth-Tastenaktion | Tastenkombination zum Bericht |
|---|---|
| Einzelklick | WIN+F20 |
| Doppelklicken | WIN+F19 |
| Drücken und Halten | WIN+F18 |
Stiftaufbewahrung
Ab Windows 10, Version 1903, unterstützt Windows Benachrichtigungen für Geräte mit kompatiblem Stiftstau. Der Mechanismus basiert auf der Hardware, die den entfernten oder ersetzten Stift erkennt und einen entsprechenden HID-Tastaturbericht für ein Paar Tastenkombinationen generiert. Melden Sie WIN+STRG+F20, um eine Andockung zu signalisieren (Stift in der Verstauung), melden Sie WIN+STRG+F19, um eine Entdocking zu signalisieren (Stift aus der Verstauung entfernt). Dies kann mit Firmware oder treiber implementiert werden.
Diese Andocken-/Abdocken-Ereignisse rufen das Shell-Freihandbereichsmenü auf oder blenden es aus. Ab Windows 10, Version 2004, reagiert Office auch auf diese Ereignisse mithilfe einer Plattform-API , mit der entwickler ihre Anwendung erweitern können, um das Bewusstsein für Stowageereignisse zu erhöhen. Es gibt keine Unterstützung, um abzufragen, ob der Stift im Dock vorhanden ist, Apps werden nur über das Entfernen und Zurückgeben von Ereignissen benachrichtigt, wenn sie sich im Vordergrund befinden.
HiD-Berichtsdeskriptorbeispiel
05,0D, // Usage Page (Digitizers)
09,20, // Usage (Stylus)
A1,01, // Collection (Application)
85,40, // Report ID (64)
95,01, // Report Count (1)
75,20, // Report Size (32)
17,00,00,00,80, // Logical Minimum (-2147483648)
27,FF,FF,FF,7F, // Logical Maximum (2147483647)
09,5B, // Transducer Serial Number
81,02, // Input (Data,Var,Abs)
75,10, // Report Size (16)
15,01, // Logical Minimum (1)
27,FF,FF,00,00, // Logical Maximum (65535)
09,91, // Transducer Vendor ID
81,02, // Input (Data,Var,Abs)
05,0E, // Usage Page (Haptics)
09,01, // Usage (0x01)
A1,02, // Collection (Logical)
85,41, // Report ID (65)
95,01, // Report Count (1)
75,08, // Report Size (8)
15,01, // Logical Minimum (1)
26,FF,00, // Logical Maximum (255)
09,24, // Usage (0x24)
B1,02, // Feature (Data,Var,Abs)
09,24, // Usage (0x24)
91,02, // Output (Data,Var,Abs)
09,23, // Usage (0x23)
B1,02, // Feature (Data,Var,Abs)
09,23, // Usage (0x23)
91,02, // Output (Data,Var,Abs)
15,01, // Logical Minimum (1)
25,12, // Logical Maximum (18)
09,20, // Usage (0x20)
B1,02, // Feature (Data,Var,Abs)
09,21, // Usage (0x21)
91,02, // Output (Data,Var,Abs)
15,00, // Logical Minimum (0)
26,FE,00, // Logical Maximum (254)
66,01,10, // Unit (SI Linear)
55,FD, // Unit Exponent (253)
35,00, // Physical Minimum (0)
46,EC,09, // Physical Maximum (2540)
09,28, // Usage (0x28)
91,02, // Output (Data,Var,Abs)
75,10, // Report Size (16)
26,D0,07, // Logical Maximum (2000)
46,D0,07, // Physical Maximum (2000)
09,25, // Usage (0x25)
91,02, // Output (Data,Var,Abs)
09,25, // Usage (0x25)
B1,02, // Feature (Data,Var,Abs)
45,00, // Physical Maximum (0)
85,42, // Report ID (66)
75,20, // Report Size (32)
17,42,00,0D,00, // Logical Minimum (852034)
27,42,00,0D,00, // Logical Maximum (852034)
09,22, // Usage (0x22)
B1,02, // Feature (Data,Var,Abs)
09,11, // Usage (0x11)
A1,02, // Collection (Logical)
05,0A, // Usage Page (Ordinal)
75,10, // Report Size (16)
95,10, // Report Count (16)
15,01, // Logical Minimum (1)
27,FF,FF,00,00, // Logical Maximum (65535)
19,03, // Usage Minimum (0x03)
29,12, // Usage Maximum (0x12)
B1,02, // Feature (Data,Var,Abs)
C0, // End Collection ()
05,0E, // Usage Page (Haptics)
09,10, // Usage (0x10)
A1,02, // Collection (Logical)
05,0A, // Usage Page (Ordinal)
16,03,10, // Logical Minimum (4099)
26,FF,2F, // Logical Maximum (12287)
19,03, // Usage Minimum (0x03)
29,12, // Usage Maximum (0x12)
B1,02, // Feature (Data,Var,Abs)
C0, // End Collection ()
C0, // End Collection ()
C0 // End Collection ()