Freigeben über


Beispiel für Berichtsdeskriptoren für Windows-Radialcontroller

In diesem Thema wird ein Beispiel für einen Berichtsdeskriptor und einige Beispiele für Deskriptorauszüge für ein Windows-Radialcontroller-Gerät vorgestellt.

Hinweis

Obwohl anbieterspezifische Verwendungen auf jeder Ebene des Berichts verwendet werden können, müssen sie auf eine Weise verwendet werden, die für alle Berichtsmethoden, nämlich serielle, parallele und hybride, gleichmäßige Implementierungen erfolgen kann. Die Nichteinhaltung dieser Anleitung führt möglicherweise nicht zu einem HLK-Fehler, kann jedoch zu schwerwiegenden Kompatibilitätsproblemen führen.

Beispiel für Eingabeberichtsdeskriptor

Im Folgenden finden Sie ein Beispiel für einen Berichtsdeskriptor für eine integrierte Sammlung von Windows-Radialcontrollern auf oberster Ebene.

// Integrated Radial Controller TLC
0x05, 0x01,     // USAGE_PAGE (Generic Desktop)          
0x09, 0x0e,     // USAGE (System Multi-Axis Controller)                      
0xa1, 0x01,     // COLLECTION (Application)         
0x85, 0x01,     //   REPORT_ID (Radial Controller)                
0x05, 0x0d,     //   USAGE_PAGE (Digitizers)
0x09, 0x21,     //   USAGE (Puck)                 
0xa1, 0x00,     //   COLLECTION (Physical)
0x05, 0x09,     //     USAGE_PAGE (Buttons)           
0x09, 0x01,     //     USAGE (Button 1)
0x95, 0x01,     //     REPORT_COUNT (1)
0x75, 0x01,     //     REPORT_SIZE (1)   
0x15, 0x00,     //     LOGICAL_MINIMUM (0)      
0x25, 0x01,     //     LOGICAL_MAXIMUM (1)         
0x81, 0x02,     //     INPUT (Data,Var,Abs)
0x05, 0x01,     //     USAGE_PAGE (Generic Desktop)          
0x09, 0x37,     //     USAGE (Dial)
0x95, 0x01,     //     REPORT_COUNT (1)
0x75, 0x0f,     //     REPORT_SIZE (15)  
0x55, 0x0f,     //     UNIT_EXPONENT (-1)           
0x65, 0x14,       //     UNIT (Degrees, English Rotation)        
0x36, 0xf0, 0xf1,   //     PHYSICAL_MINIMUM (-3600)         
0x46, 0x10, 0x0e,   //     PHYSICAL_MAXIMUM (3600)      
0x16, 0xf0, 0xf1,   //     LOGICAL_MINIMUM (-3600)      
0x26, 0x10, 0x0e,   //     LOGICAL_MAXIMUM (3600)        
0x81, 0x06,     //     INPUT (Data,Var,Rel)  
0x09, 0x30,     //     USAGE (X)
0x75, 0x10,     //     REPORT_SIZE (16)                    
0x55, 0x0d,     //     UNIT_EXPONENT (-3)           
0x65, 0x13,     //     UNIT (Inch,EngLinear)        
0x35, 0x00,     //     PHYSICAL_MINIMUM (0)         
0x46, 0xc0, 0x5d,   //     PHYSICAL_MAXIMUM (24000)      
0x15, 0x00,     //     LOGICAL_MINIMUM (0)      
0x26, 0xff, 0x7f,   //     LOGICAL_MAXIMUM (32767)      
0x81, 0x02,     //     INPUT (Data,Var,Abs)         
0x09, 0x31,     //     USAGE (Y)                    
0x46, 0xb0, 0x36,   //     PHYSICAL_MAXIMUM (14000)      
0x81, 0x02,     //     INPUT (Data,Var,Abs)        
0x05, 0x0d,     //     USAGE_PAGE (Digitizers)
0x09, 0x48,     //     USAGE (Width)
0x36, 0xb8, 0x0b,   //     PHYSICAL_MINIMUM (3000)
0x46, 0xb8, 0x0b,   //     PHYSICAL_MAXIMUM (3000)
0x16, 0xb8, 0x0b,   //     LOGICAL_MINIMUM (3000)    
0x26, 0xb8, 0x0b,   //     LOGICAL_MAXIMUM (3000)      
0x81, 0x03      //     INPUT (Cnst,Var,Abs)                               
0xc0,           //   END_COLLECTION
0xc0,           // END_COLLECTION

Beispiel für einen Berichtsdeskriptor für haptisches Feedback-Feature

Im Folgenden finden Sie einen Ausschnitt eines Berichtsdeskriptors für eine haptische Feedback-Sammlung, die in eine integrierte Sammlung von Windows-Radialcontrollern auf oberster Ebene einbezogen werden soll.

0x85, 0x02,            // REPORT_ID (Haptic Feedback)                
0x05, 0x0e,            // USAGE_PAGE (Haptics)          
0x09, 0x01,            // USAGE (Simple Haptic Controller)                      
0xa1, 0x02,            // COLLECTION (Logical)
0x09, 0x20,            //   USAGE (Auto Trigger)
0x16, 0x00, 0x10,        //   LOGICAL_MINIMUM (0x1000)    
0x26, 0x04, 0x10,        //   LOGICAL_MAXIMUM (0x1004)
0x95, 0x01,            //   REPORT_COUNT (1)
0x75, 0x10,            //   REPORT_SIZE (16)
0xb1, 0x02,            //   FEATURE (Data,Var,Abs)
0x09, 0x21,            //   USAGE (Manual Trigger)
0x91, 0x02,            //   OUTPUT (Data,Var,Abs)
0x09, 0x22,            //   USAGE (Auto Trigger Associated Control)
0x17, 0x37, 0x00, 0x01, 0x00,     //   LOGICAL_MINIMUM (0x00010037)    
0x27, 0x37, 0x00, 0x01, 0x00,    //   LOGICAL_MAXIMUM (0x00010037)
0x95, 0x01,            //   REPORT_COUNT (1)
0x75, 0x20,            //   REPORT_SIZE (32)
0xb1, 0x03,            //   FEATURE (Cnst,Var,Abs)
0x09, 0x23,            //   USAGE (Intensity)
0x15, 0x00,            //   LOGICAL_MINIMUM (0)    
0x25, 0x7f,            //   LOGICAL_MAXIMUM (127)
0x75, 0x08,            //   REPORT_SIZE (8)
0x91, 0x02,            //   OUTPUT (Data,Var,Abs)
0x09, 0x23,            //   USAGE (Intensity)
0xb1, 0x02,            //   FEATURE (Data,Var,Abs)
0x09, 0x24,            //   USAGE (Repeat Count)
0x91, 0x02,            //   OUTPUT (Data,Var,Abs)
0x09, 0x24,            //   USAGE (Repeat Count)
0xb1, 0x02,            //   FEATURE (Data,Var,Abs)
0x09, 0x25,            //   USAGE (Retrigger Period)
0x91, 0x02,            //   OUTPUT (Data,Var,Abs)
0x09, 0x25,            //   USAGE (Retrigger Period)
0xb1, 0x02,            //   FEATURE (Data,Var,Abs)
0x09, 0x28,            //   USAGE (Waveform Cutoff Time)
0x26, 0xff, 0x7f,        //   LOGICAL_MAXIMUM (32,767)
0x75, 0x10,            //   REPORT_SIZE (16)
0xb1, 0x02,            //   FEATURE (Data,Var,Abs)
0x05, 0x0e,            //   USAGE_PAGE (Haptics)          
0x09, 0x10,            //   USAGE (Waveform List)                     
0xa1, 0x02,            //   COLLECTION (Logical)
0x05, 0x0A,            //     USAGE_PAGE (Ordinal)          
0x09, 0x03,            //     USAGE (Ordinal 3)
0x95, 0x01,            //     REPORT_COUNT (1)
0x75, 0x08,            //     REPORT_SIZE (8)
0x15, 0x03,            //     LOGICAL_MINIMUM (3)
0x25, 0x03,            //     LOGICAL_MAXIMUM (3)
0x36, 0x03, 0x10,        //     PHYSICAL_MINIMUM (0x1003)
0x46, 0x03, 0x10,        //     PHYSICAL_MAXIMUM (0x1003)
0xb1, 0x03,            //     FEATURE (Cnst,Var,Abs)
0x09, 0x04,             //     USAGE (Ordinal 4)
0x15, 0x04,             //     LOGICAL_MINIMUM (4)
0x25, 0x04,            //     LOGICAL_MAXIMUM (4)
0x36, 0x04, 0x10,        //     PHYSICAL_MINIMUM (0x1004)
0x46, 0x04, 0x10,        //     PHYSICAL_MAXIMUM (0x1004)
0xb1, 0x03            //     FEATURE (Cnst,Var,Abs)
0xc0,                //   END_COLLECTION         
0x05, 0x0e,            //   USAGE_PAGE (Haptics)          
0x09, 0x11,            //   USAGE (Duration List)                     
0xa1, 0x02,            //   COLLECTION (Logical)
0x05, 0x0a            //     USAGE_PAGE (Ordinal)          
0x09, 0x03,            //     USAGE (Ordinal 3)
0x09, 0x04,            //     USAGE (Ordinal 4)
0x15, 0x00,            //     LOGICAL_MINIMUM (0)
0x26, 0xff, 0x0f,        //     LOGICAL_MAXIMUM (4095)
0x95, 0x02,            //     REPORT_COUNT (2)
0x75, 0x08,            //     REPORT_SIZE (8)
0xb1, 0x02,            //     FEATURE (Data,Var,Abs)
0xc0,                //   END_COLLECTION