Exemples de descripteurs de rapport du contrôleur radial Windows
Cette rubrique présente un exemple de descripteur de rapport et des exemples d’extraits de descripteurs pour un appareil de contrôleur radial Windows.
Notes
Bien que les utilisations spécifiques du fournisseur puissent être utilisées à n’importe quel niveau du rapport, elles doivent être utilisées d’une manière qui peut être implémentée de manière égale dans toutes les méthodes de création de rapports, à savoir, série, parallèle et hybride. Le non-respect de ces instructions peut ne pas entraîner une défaillance de HLK, mais peut entraîner de graves problèmes de compatibilité.
Exemple de descripteur de rapport d’entrée
Voici un exemple de descripteur de rapport pour une collection de contrôleurs radial Windows intégrée.
// 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
Exemple de descripteur de rapport de fonctionnalité de commentaires haptiques
Voici un extrait de code de descripteur de rapport pour une collection de commentaires haptiques à inclure dans une collection de contrôleur radial Windows intégrée.
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