Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ten dokument zawiera szczegółowe informacje na temat implementacji protokołu dla urządzenia haptic Pen łączącego się z zgodnym hostem systemu Windows 11. Nie obejmuje to wskazówek dotyczących ograniczeń mechanicznych, ograniczeń elektrycznych ani wyboru komponentów do generowania odpowiedzi haptycznej w przetworniku pióra. Te wskazówki dotyczące implementacji są niezależne od protokołu pióra używanego między przetwornikiem pióra a cyfryzatorem pióra, jednak implementacja może wybrać użycie protokołu pióra z funkcją łącza w górę, co pozwala cyfryzatorowi pióra przekazać dodatkowe parametry do przetwornika pióra w celu modulacji odpowiedzi haptycznej.
Klasa urządzenia
Haptic Pen to rozszerzenie klasy Pen Device w systemie Windows. Ten przewodnik implementacji uzupełnia przewodnik implementacji pióra i koncentruje się na implementowaniu haptyki w przetworniku pióra, dlatego haptyczne pióra muszą spełniać wymagania określone w przewodniku implementacji pióra oraz zawarte tutaj.
Łączność z magistralą urządzeń
Pióro dotykowe używa wbudowanych sterowników firmy Microsoft, aby połączyć się z hostem systemu Windows za pomocą HID przez Bluetooth.
Implementacja protokołu haptycznego pióra
Aby zrozumieć przedstawione tutaj informacje, należy dobrze zrozumieć protokół HID. Aby uzyskać informacje o protokole HID, zobacz następujące zasoby:
System Windows zawiera sterownik klasy HID i odpowiedni sterownik miniportu obsługujący funkcję Bluetooth HID, dlatego nie ma potrzeby żadnych sterowników mini-portów innych firm. Oprogramowanie układowe pióra haptycznego musi zgłaszać użycia opisane w tym temacie. System Windows będzie używać oprogramowania układowego i własnych sterowników HID, aby włączyć urządzenie i zapewnić aplikacjom systemu Windows dostęp do urządzenia.
Przykładowy deskryptor jest udostępniany w poniższej sekcji Deskryptory przykładowych raportów.
Wymagana kolekcja HID najwyższego poziomu
Urządzenie pióro haptic powinno używać protokołu HID w systemie Windows 10 w taki sposób, aby urządzenie dostarczało kolekcję najwyższego poziomu, która jest wyświetlana jako cyfryzator/rysik (Page 0x0D, Usage 0x20).
Raport wejściowy funkcji Pen Digitizer
Kolekcja pen digitizer musi zgłosić identyfikator stylus składający się z numeru seryjnego przetwornika i identyfikatora dostawcy przetwornika w raportach wejściowych zgłoszonych do systemu operacyjnego. Ten sam identyfikator stylus musi być zgłaszany za pośrednictwem kolekcji stylus. Dzięki temu system operacyjny może skorelować dane wejściowe pióra wygenerowane przez digitizatora z rysikami. Szczegółowe informacje na temat przewodnika implementacji protokołu pióra można znaleźć pod tym linkiem: Implementacja protokołu pióra.
Numer seryjny przetwornika
Numer seryjny przetwornika jest unikatowym trwałym identyfikatorem przetwornika używanego w akcesorium do pióra komunikującego się z cyfrowym przetwornikiem. Musi być 32-bitowy i jest definiowany przez dostawcę lub podmiot zidentyfikowany przez identyfikator dostawcy przetwornika. W sytuacjach, gdy numer seryjny przetwornika jest nieznany digitalizerowi, ponieważ akcesorium pióra nie obsługuje przekazywania tej wartości lub transmisja danych nie została w pełni odebrana, digitalizer przesyła 0 do hosta. Pozycja null nie jest obsługiwana przez hosta.
Numer seryjny przetwornika — część 2
Numer seryjny przetwornika — część 2 umożliwia określenie dodatkowych 32-bitowych bitów jako część unikatowego identyfikatora trwałego przetwornika używanego w akcesorium piórowym. W przypadkach, gdy numer seryjny przetwornika – część 2 jest nieznany cyfrowemu przetwornikowi, ponieważ akcesorium pióra nie obsługuje przesyłania tej wartości lub transmisja nie została odebrana w całości, przetwornik przekazuje 0 do hosta. Pozycja null nie jest obsługiwana przez hosta.
| Strona | identyfikator | Notatki |
|---|---|---|
| 0xD | 0x5B | Obowiązkowe dla funkcji zależnych od unikatowej identyfikacji pióra (patrz poniżej) |
| 0xD | 0x6E | Opcjonalne rozszerzenie numeru seryjnego przez dodatkowe 32 bity |
Identyfikator dostawcy przetwornika
Identyfikator dostawcy przetwornika jest polem służącym do wskazania producenta przetwornika używanego w akcesorium pióra współpracującym z cyfryzatorem pióra. Jest wymagany 2-bajtowy identyfikator dostawcy USB-IF, przypisany albo producentowi, albo przez dostawcę IHV/OEM, którzy autoryzują użycie swojego identyfikatora dostawcy USB-IF do tego celu.
| Strona | identyfikator | Notatki |
|---|---|---|
| 0xD | 0x91 | Obowiązkowe dla funkcji zależnych od unikatowej identyfikacji pióra (patrz poniżej) |
Funkcje wymagające unikatowej identyfikacji długopisu
Raportowanie PenID jest konieczne, aby umożliwić scenariusze, takie jak funkcje haptyczne pióra (związane z haptycznymi funkcjami w tym przewodniku).
Jest to również obowiązkowe w scenariuszach, które używają wielu piór do pisma odręcznego. Przykład:
- Aplikacja Tablica w systemie Windows obsługuje wiele piór, gdzie każde pióro można przypisać do określonego narzędzia pisma odręcznego.
- Ogólnie rzecz biorąc, aplikacje, które chcą przypisać atrybuty lub zachowania do różnych fizycznych długopisów, mimo że cyfryzator może obsługiwać tylko jedno pióro jednocześnie.
- Aplikacje, które chcą śledzić wiele równoczesnych rysików na obsługiwanych digitalizatorach
Raport wyjściowy dotykowy
Jeśli urządzenie długopisowe obsługuje informację zwrotną haptyczną, może umożliwić systemowi i aplikacjom korzystanie z tej funkcji, uwzględniając kolekcję informacji zwrotnych haptycznych (strona 0x0E, Usage 0x01) w stylus TLC. Aby uzyskać więcej informacji na temat sposobu, w jaki specyfikacja HID obsługuje opinie haptyczne, zapoznaj się ze stroną Haptics ratyfikacji specyfikacji HID.
Host używa następujących użyć w raporcie wyjściowym (za pośrednictwem zbioru sprzężenia zwrotnego haptycznego), aby umożliwić hostowi wystawianie sygnałów sprzężenia zwrotnego haptycznego do urządzenia haptycznego. Jeśli urządzenie zdecyduje się uwidocznić kolekcję opinii haptycznych, niektóre zastosowania są obowiązkowe, aby zezwolić na obsługiwanie opinii haptycznych inicjowanych przez hosta.
| Członek | Description | Strona | identyfikator | Obowiązkowe/opcjonalne |
|---|---|---|---|---|
| Lista kształtów falowych | Uporządkowana lista haptycznych kształtów fal obsługiwanych przez urządzenie | 0x0E | 0x10 | Mandatory |
| Lista czasu trwania | Uporządkowana lista czasów trwania kształtów falowych na liście kształtów falowych | 0x0E | 0x11 | Mandatory |
| Wyzwalacz automatyczny | Kształt falowy do automatycznego wyzwalania według uznania urządzenia | 0x0E | 0x20 | Mandatory |
| Kontrolka skojarzona z automatycznym wyzwalaczem | HID użycie elementu sterującego związanego ze sprzężeniem zwrotnym haptycznym | 0x0E | 0x22 | Mandatory |
| Intensywność | Dane wyjściowe — intensywność ręcznego kształtowania fal wyzwalacza jako wartość procentowa | 0x0E | 0x23 | Opcjonalnie |
| Liczba powtórzeń | Dane wyjściowe — liczba razy odtworzenia przebiegu ręcznego wyzwalacza po początkowym odtwarzaniu. | 0x0E | 0x24 | Opcjonalnie |
| Okres ponownego pobierania | Dane wyjściowe — czas oczekiwania przed ponownym wyzwoleniem wyzwalacza ręcznego podczas powtarzania | 0x0E | 0x25 | Opcjonalnie |
| Czas odcięcia kształtów falowych | Maksymalny czas odtwarzania wzorca wyzwalanego ręcznie przed jego zatrzymaniem | 0x0E | 0x28 | Opcjonalnie |
Lista kształtów falowych
Użycie listy kształtów falowych reprezentuje kolekcję użycia HID obsługiwanych kształtów falowych uporządkowanych przy użyciu reguł porządkowych. Wstępnie zdefiniowane kształty falowe są określone w specyfikacji HID. W przypadku haptycznych urządzeń piórowych kształt fali może być dzielony na dwa segmenty, które odpowiadają różnym scenariuszom.
- WAVEFORM_*CONTINOUS — informacje zwrotne oparte na atramencie do symulowania różnych tekstur, podczas gdy użytkownik aktywnie rysuje za pomocą rozmaitych narzędzi, takich jak pióro, ołówek itp.
- WAVEFORM_* — dyskretna, nieciągła informacja zwrotna oparta na interakcjach, gdy użytkownik wykonuje niektóre zadania oparte na danych wejściowych, takie jak umieszczenie kursora na przycisku, kliknięcie wyłączonego przycisku, i pomyślne rozpoznawanie kształtów pisma odręcznego.
Poniżej znajduje się pełna lista kształtów fal obsługiwanych w przypadku urządzeń haptycznych piórem:
| Przebiegu | Description | Strona | identyfikator | Obowiązkowe/opcjonalne |
|---|---|---|---|---|
| WAVEFORM_NONE | Brak operacji. Nie należy wpływać na stan odtwarzania bieżących kształtów fali | 0x0E | 0x1001 | Mandatory |
| WAVEFORM_STOP | Zatrzymuje odtwarzanie trwających kształtów fal | 0x0E | 0x1002 | Mandatory |
| WAVEFORM_CLICK | Tworzy krótki sygnał "klik". Domyślne ustawienie zapasowe, gdy informacja zwrotna dotycząca interakcji wybrana przez aplikację nie jest wspierana przez pióro haptyczne | 0x0E | 0x1003 | Mandatory |
| WAVEFORM_INKCONTINUOUS | Symuluje uczucie pisma odręcznego za pomocą fizycznego pióra punktowego. Domyślna opcja rezerwowa, gdy kształt fali pisma odręcznego nie jest obsługiwany przez pióro haptyczne | 0x0E | 0x100B | Mandatory |
| SUKCES_FALI | Silny sygnał haptyczny ostrzegawczego użytkownika, że akcja powiodła się | 0x0E | 0x1009 | Opcjonalnie |
| WAVEFORM_ERROR | Silny sygnał haptyczny ostrzegawcy użytkownika, że akcja nie powiodła się lub wystąpił błąd | 0x0E | 0x100A | Opcjonalnie |
| WAVEFORM_HOVER | Sygnał haptyczny, gdy użytkownik zbliża haptyczne pióro do interaktywnego elementu interfejsu użytkownika | 0x0E | 0x1008 | Opcjonalnie |
| WAVEFORM_PRESS | Sygnal haptyczny, gdy użytkownik naciska interaktywny element interfejsu użytkownika podczas czynności przyrostowej (zobacz Wersja) | 0x0E | 0x1006 | Opcjonalnie |
| WAVEFORM_RELEASE | Sygnał haptyczny, gdy użytkownik zwalnia interakcyjny element interfejsu użytkownika w akcji przyrostowej (zobacz Press) | 0x0E | 0x1007 | Opcjonalnie |
| WAVEFORM_PENCILCONTINUOUS | Ciągły sygnał haptyczny, gdy użytkownik wybiera ołówek jako narzędzie pisma odręcznego | 0x0E | 0x100C | Opcjonalnie |
| WAVEFORM_MARKERCONTINUOUS | Ciągły sygnał haptyczny, gdy użytkownik wybiera znacznik jako narzędzie pisma odręcznego | 0x0E | 0x100D | Opcjonalnie |
| WYKRESZKSZTAŁTU_DŁUTOMARKERCIĄGŁY | Ciągły sygnał haptyczny, gdy użytkownik wybiera znacznik/wyróżniacz cysel jako narzędzie pisma odręcznego | 0x0E | 0x100E | Opcjonalnie |
| WAVEFORM_BRUSHCONTINUOUS | Ciągły sygnał haptyczny, gdy użytkownik wybiera szczotkę jako narzędzie pisma odręcznego | 0x0E | 0x100F | Opcjonalnie |
| KONTYNUALNE_USUWANIE_FALI | Ciągły sygnał haptyczny, gdy użytkownik wybiera gumkę jako narzędzie do rysowania | 0x0E | 0x1010 | Opcjonalnie |
| WAVEFORM_SPARKLECONTINUOUS | Ciągły sygnał haptyczny dla specjalnych narzędzi atramentowych, takich jak wielokolorowa szczotka | 0x0E | 0x1011 | Opcjonalnie |
Uwaga / Notatka
Chociaż nie jest to wymagane, zaleca się również zaimplementowanie innych wyliczonych kształtów fal w celu zapewnienia bardziej kompletnego środowiska użytkownika. W szczególności WAVEFORM_PRESS i WAVEFORM_RELEASE są zdecydowanie zalecane, ponieważ zapewniają cenne opinie dotyczące interakcji.
Zarówno WAVEFORM_NONE, jak i WAVEFORM_STOP są wymagane dla wszystkich urządzeń zgodnych ze standardem HID. Porządkowe 1 i 2 są niejawnie ustawione na WAVEFORM_NONE i WAVEFORM_STOP. Nie muszą być deklarowane na liście kształtów falowych ani na liście czasu trwania. Lista kształtów falowych deklaruje obsługiwane kształty falowe według fizycznego minimum i maksymalnej liczby wszystkich porządkowych na liście.
Lista czasu trwania
Użycie listy czasu trwania reprezentuje kolekcję czasów trwania obsługiwanych kształtów falowych na liście Waveform uporządkowane przy użyciu reguł. Jednostka czasu trwania kształtów fali to milisekundy, a czas trwania musi być dodatnią wartością niezerową dla dowolnego nieciągłego kształt fali. Jeśli kształt fali jest ciągły (będzie odtwarzany do momentu, gdy zostanie zatrzymany przez hosta lub przekroczony czas odcięcia fali), to jego czas trwania ustala się na zero.
zakłada się, że WAVEFORM_NONE i WAVEFORM_STOP mają czas trwania zero. Nie muszą być zadeklarowane na liście czasu trwania.
Intensywność
Użycie intensywności reprezentuje wartość procentową maksymalnej intensywności, która ma być stosowana do kształtów fali. Ta wartość powinna się różnić w zakresie od 0 do 100 procent. 100 procent wskazuje, że kształty fal zostaną wyzwolone przez urządzenie przy maksymalnej sile, a 0 procent wskazuje, że transducer haptyczny nie jest włączony.
Liczba powtórzeń
Liczba powtórzeń określa, ile razy należy powtórzyć kształt fali. Liczba powtórzeń zera wskazuje, że kształt fali wyzwalacza ręcznego powinien być odtwarzany tylko raz (bez powtarzania). Jeśli przekroczono czas odcięcia Waveform, oczekuje się, że wszystkie niekompletne powtórzenia będą ignorowane.
Okres ponownego pobierania
Użycie okresu ponownego wyzwalania reprezentuje czas, przez jaki urządzenie czeka przed powtórzeniem ręcznie wyzwalanej formy fali w raporcie wyjściowym, zgodnie z wartością określoną przez Liczbę Powtórzeń. Jednostki dla tej wartości to milisekundy. Jeśli okres pobierania jest mniejszy niż czas trwania odtwarzanego kształtu fali, kształt fali powinien zostać zatrzymany i ponownie uruchomiony w okresie wskazanym przez okres pobierania.
Czas odcięcia kształtów falowych
Użycie czasu odcięcia w formacie Waveform reprezentuje maksymalny czas, przez jaki urządzenie zezwoli na powtórzenie ręcznego przebiegu wyzwalacza przed zakończeniem odtwarzania. Jest to stała wartość urządzenia i zawiera zarówno ciągłe kształty fal bez ustawionych czasów trwania, jak i kształty fal z dyskretnymi czasami trwania, które są ustawione tak, aby powtarzały się wiele razy. Jednostki dla tej wartości to milisekundy.
Raport wyjściowy dotykowy
Gospodarz używa następujących zastosowań w raporcie wyjściowym do generowania zdarzeń haptycznych na urządzeniu Haptic Pen. Niektóre użycia są obowiązkowe w celu zapewnienia zgodności z implementacją hosta systemu Windows.
| Członek | Description | Strona | identyfikator | Obowiązkowe/opcjonalne |
|---|---|---|---|---|
| Wyzwalacz ręczny | Kształt fali do wyzwolenia jako jawne polecenie z hosta | 0x0E | 0x21 | Mandatory |
| Intensywność | Intensywność ręcznego formowania fali wyzwalacza jako wartość procentowa | 0x0E | 0x23 | Mandatory |
| Liczba powtórzeń | Liczba prób odtwarzania ręcznego wyzwalacza falowego po początkowym odtwarzaniu | 0x0E | 0x24 | Opcjonalnie |
| Okres ponownego pobierania | Czas oczekiwania przed ponownym wyzwoleniem ręcznego wyzwalacza przy powtarzaniu | 0x0E | 0x25 | Opcjonalnie |
Wyzwalacz ręczny
Użycie wyzwalacza ręcznego reprezentuje obsługiwane użycie kształtów falowych z listy kształtów falowych, które zostało żądane do odtworzenia przez hosta. Gdy raport wyjściowy zawierający wyzwalacz ręczny inny niż WAVEFORM_NONE jest wysyłany do urządzenia, powinien natychmiast rozpocząć odtwarzanie określonego kształta fali z dodatkowymi właściwościami zawartymi w raporcie wyjściowym (intensywność, liczba powtórzeń, okres pobierania). Gdy raport wyjściowy zawiera wyzwalacz ręczny WAVEFORM_STOP, wszystkie trwające odtwarzanie kształtów falowych powinny zostać zatrzymane.
W przypadku intensywności, liczby powtórzeń i okresu ponownego wyzwalania, zapoznaj się z poprzednią sekcją w odniesieniu do raportu dotyczącego funkcji wyjściowych.
Uruchamianie i zatrzymywanie haptyki
Poniższy schemat blokowy opisuje, kiedy należy skonfigurować, wyczyścić, uruchomić i zatrzymać sygnały haptyczne pióra.
Różne stany haptyczne opisane poniżej to:
- Odtwarzane: Długopis aktywnie odtwarza falę haptyczną
- Wstrzymano: pióro jest skonfigurowane z przebiegiem falowym, ale nie jest on aktywnie odtwarzany
- Zatrzymano: Długopis nie jest skonfigurowany do odtwarzania fali i nie odtwarza nic.
Stan pióra w odniesieniu do digitalizatora można znaleźć w artykule Stany pióra systemu Windows.
Uwaga / Notatka
Kiedy pióro wychodzi poza zakres, zaleca się, ale nie jest wymagane, aby wyczyścić ustawienia konfiguracji haptycznej. Jest to przedstawione na poniższym diagramie przez dwie alternatywne ścieżki wychodzące ze stanu "Pióro: w zakresie; Haptics: Wstrzymano", gdy pióro wykracza poza zakres.
Uwaga / Notatka
Host w dowolnym momencie może zażądać, aby nie ciągły kształt fali był odtwarzany. W takim przypadku długopis powinien go odtworzyć, a następnie wrócić do stanu, w jaki był wcześniej.
Uwaga / Notatka
Host konfiguruje tylko ciągłe kształty fali. Dyskretne/nieciągłe kształty fali są wyzwalane ręcznie.
Kolekcja klawiatury (opcjonalnie)
Opcjonalna funkcja umożliwiająca przesyłanie raportów kliknięć końcowych przycisków do hosta za pośrednictwem raportów klawiatury HID.
Zgodne urządzenie zgłasza 3 różne kombinacje klawiatury odpowiadające 3 odrębnym akcjom przycisków za pośrednictwem urządzenia klawiaturowego Bluetooth HID uwidocznionego dla hosta. Akcje i odpowiednie kombinacje klawiatury zostały opisane poniżej:
| Akcja przycisku | Kombinacja klawiszy |
|---|---|
| Kliknięcie jednokrotne | WIN+F20 |
| Kliknij dwukrotnie | WIN+F19 |
| Naciśnij i przytrzymaj | Win+F18 |
Implementacja przycisku Bluetooth
Aby zaimplementować końcowy przycisk Bluetooth, urządzenie będzie zgłaszać 3 odrębne kombinacje klawiatury odpowiadające 3 odrębnym akcjom przycisku za pośrednictwem urządzenia klawiatury HID Bluetooth LE udostępnionego na hoście. Akcje i odpowiednie kombinacje klawiatury zostały opisane poniżej:
| Akcja przycisku Bluetooth | Kombinacja klawiszy do zgłaszania |
|---|---|
| Kliknięcie jednokrotne | WIN+F20 |
| Kliknij dwukrotnie | WIN+F19 |
| Naciśnij i przytrzymaj | WIN+F18 |
Pióro stowage
Począwszy od systemu Windows 10, wersja 1903, system Windows obsługuje powiadomienia dla urządzeń z kompatybilnym uchwytem na pióro. Mechanizm polega na tym, że sprzęt wykrywa wyciągnięcie lub włożenie pióra i generuje odpowiedni raport klawiaturowy HID dla pary kombinacji skrótów. Aby zasygnalizować dokowanie (pióro umieszczone w schowku), użyj WIN+CTRL+F20, a aby zasygnalizować oddokowanie (pióro usunięte ze schowka), użyj WIN+CTRL+F19. Można to zaimplementować za pomocą oprogramowania układowego lub sterownika.
Te zdarzenia oddokowania/dokowania otwierają/zamykają menu obszaru roboczego pisma cyfrowego powłoki. Począwszy od systemu Windows 10, wersja 2004 Office reaguje również na te zdarzenia przy użyciu interfejsu API platformy , który umożliwia każdemu deweloperowi rozszerzenie aplikacji na świadomość zdarzeń stowage. Nie ma mechanizmu sprawdzania, czy pióro jest w doku; aplikacje są powiadamiane tylko o zdarzeniach usunięcia i powrotu pióra, gdy są w pierwszym planie.
Przykładowy deskryptor raportu HID
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 ()