Stadia Controller USB vs BLE
6 removals
465 lines
5 additions
464 lines
# HIDAPI device info struct:
# HIDAPI device info struct:
dev->vendor_id = 0x18D1
dev->vendor_id = 0x18D1
dev->product_id = 0x9400
dev->product_id = 0x9400
dev->manufacturer_string = "Google LLC"
dev->manufacturer_string = "Google"
dev->product_string = "Stadia Controller rev. A"
dev->product_string = "StadiaWMGT-2126"
dev->release_number = 0x0100
dev->release_number = 0x0100
dev->interface_number = 1
dev->interface_number = -1
dev->usage = 0x0005
dev->usage = 0x0005
dev->usage_page = 0x0001
dev->usage_page = 0x0001
dev->path = "\\?\HID#VID_18D1&PID_9400&MI_01#8&385ce9fc&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}"
dev->path = "\\?\HID#{00001812-0000-1000-8000-00805f9b34fb}_Dev_VID&0218d1_PID&9400_REV&0100_f64ec3312126#a&2d81462b&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}"
# Preparsed Data struct:
# Preparsed Data struct:
pp_data->MagicKey = 0x48696450204B4452
pp_data->MagicKey = 0x48696450204B4452
pp_data->Usage = 0x0005
pp_data->Usage = 0x0005
pp_data->UsagePage = 0x0001
pp_data->UsagePage = 0x0001
pp_data->Reserved = 0x00000000
pp_data->Reserved = 0x00000000
# Input caps_info struct:
# Input caps_info struct:
pp_data->caps_info[0]->FirstCap = 0
pp_data->caps_info[0]->FirstCap = 0
pp_data->caps_info[0]->LastCap = 25
pp_data->caps_info[0]->LastCap = 25
pp_data->caps_info[0]->NumberOfCaps = 25
pp_data->caps_info[0]->NumberOfCaps = 25
pp_data->caps_info[0]->ReportByteLength = 11
pp_data->caps_info[0]->ReportByteLength = 11
# Output caps_info struct:
# Output caps_info struct:
pp_data->caps_info[1]->FirstCap = 25
pp_data->caps_info[1]->FirstCap = 25
pp_data->caps_info[1]->LastCap = 26
pp_data->caps_info[1]->LastCap = 26
pp_data->caps_info[1]->NumberOfCaps = 1
pp_data->caps_info[1]->NumberOfCaps = 1
pp_data->caps_info[1]->ReportByteLength = 5
pp_data->caps_info[1]->ReportByteLength = 5
# Feature caps_info struct:
# Feature caps_info struct:
pp_data->caps_info[2]->FirstCap = 26
pp_data->caps_info[2]->FirstCap = 26
pp_data->caps_info[2]->LastCap = 26
pp_data->caps_info[2]->LastCap = 26
pp_data->caps_info[2]->NumberOfCaps = 0
pp_data->caps_info[2]->NumberOfCaps = 0
pp_data->caps_info[2]->ReportByteLength = 0
pp_data->caps_info[2]->ReportByteLength = 0
# LinkCollectionArray Offset & Size:
# LinkCollectionArray Offset & Size:
pp_data->FirstByteOfLinkCollectionArray = 0x0A90
pp_data->FirstByteOfLinkCollectionArray = 0x0A90
pp_data->NumberLinkCollectionNodes = 3
pp_data->NumberLinkCollectionNodes = 3
# Input hid_pp_cap struct:
# Input hid_pp_cap struct:
pp_data->cap[0]->UsagePage = 0x0001
pp_data->cap[0]->UsagePage = 0x0001
pp_data->cap[0]->ReportID = 0x03
pp_data->cap[0]->ReportID = 0x03
pp_data->cap[0]->BitPosition = 0
pp_data->cap[0]->BitPosition = 0
pp_data->cap[0]->BitSize = 4
pp_data->cap[0]->BitSize = 4
pp_data->cap[0]->ReportCount = 1
pp_data->cap[0]->ReportCount = 1
pp_data->cap[0]->BytePosition = 0x0001
pp_data->cap[0]->BytePosition = 0x0001
pp_data->cap[0]->BitCount = 4
pp_data->cap[0]->BitCount = 4
pp_data->cap[0]->BitField = 0x42
pp_data->cap[0]->BitField = 0x42
pp_data->cap[0]->NextBytePosition = 0x0002
pp_data->cap[0]->NextBytePosition = 0x0002
pp_data->cap[0]->LinkCollection = 0x0000
pp_data->cap[0]->LinkCollection = 0x0000
pp_data->cap[0]->LinkUsagePage = 0x0001
pp_data->cap[0]->LinkUsagePage = 0x0001
pp_data->cap[0]->LinkUsage = 0x0005
pp_data->cap[0]->LinkUsage = 0x0005
pp_data->cap[0]->IsMultipleItemsForArray = 0
pp_data->cap[0]->IsMultipleItemsForArray = 0
pp_data->cap[0]->IsButtonCap = 0
pp_data->cap[0]->IsButtonCap = 0
pp_data->cap[0]->IsPadding = 0
pp_data->cap[0]->IsPadding = 0
pp_data->cap[0]->IsAbsolute = 1
pp_data->cap[0]->IsAbsolute = 1
pp_data->cap[0]->IsRange = 0
pp_data->cap[0]->IsRange = 0
pp_data->cap[0]->IsAlias = 0
pp_data->cap[0]->IsAlias = 0
pp_data->cap[0]->IsStringRange = 0
pp_data->cap[0]->IsStringRange = 0
pp_data->cap[0]->IsDesignatorRange = 0
pp_data->cap[0]->IsDesignatorRange = 0
pp_data->cap[0]->Reserved1 = 0x000000
pp_data->cap[0]->Reserved1 = 0x000000
pp_data->cap[0]->pp_cap->UnknownTokens[0].Token = 0x00
pp_data->cap[0]->pp_cap->UnknownTokens[0].Token = 0x00
pp_data->cap[0]->pp_cap->UnknownTokens[0].Reserved = 0x000000
pp_data->cap[0]->pp_cap->UnknownTokens[0].Reserved = 0x000000
pp_data->cap[0]->pp_cap->UnknownTokens[0].BitField = 0x00000000
pp_data->cap[0]->pp_cap->UnknownTokens[0].BitField = 0x00000000
pp_data->cap[0]->pp_cap->UnknownTokens[1].Token = 0x00
pp_data->cap[0]->pp_cap->UnknownTokens[1].Token = 0x00
pp_data->cap[0]->pp_cap->UnknownTokens[1].Reserved = 0x000000
pp_data->cap[0]->pp_cap->UnknownTokens[1].Reserved = 0x000000
pp_data->cap[0]->pp_cap->UnknownTokens[1].BitField = 0x00000000
pp_data->cap[0]->pp_cap->UnknownTokens[1].BitField = 0x00000000
pp_data->cap[0]->pp_cap->UnknownTokens[2].Token = 0x00
pp_data->cap[0]->pp_cap->UnknownTokens[2].Token = 0x00
pp_data->cap[0]->pp_cap->UnknownTokens[2].Reserved = 0x000000
pp_data->cap[0]->pp_cap->UnknownTokens[2].Reserved = 0x000000
pp_data->cap[0]->pp_cap->UnknownTokens[2].BitField = 0x00000000
pp_data->cap[0]->pp_cap->UnknownTokens[2].BitField = 0x00000000
pp_data->cap[0]->pp_cap->UnknownTokens[3].Token = 0x00
pp_data->cap[0]->pp_cap->UnknownTokens[3].Token = 0x00
pp_data->cap[0]->pp_cap->UnknownTokens[3].Reserved = 0x000000
pp_data->cap[0]->pp_cap->UnknownTokens[3].Reserved = 0x000000
pp_data->cap[0]->pp_cap->UnknownTokens[3].BitField = 0x00000000
pp_data->cap[0]->pp_cap->UnknownTokens[3].BitField = 0x00000000
pp_data->cap[0]->NotRange.Usage = 0x0039
pp_data->cap[0]->NotRange.Usage = 0x0039
pp_data->cap[0]->NotRange.Reserved1 = 0x0039
pp_data->cap[0]->NotRange.Reserved1 = 0x0039
pp_data->cap[0]->NotRange.StringIndex = 0
pp_data->cap[0]->NotRange.StringIndex = 0
pp_data->cap[0]->NotRange.Reserved2 = 0
pp_data->cap[0]->NotRange.Reserved2 = 0
pp_data->cap[0]->NotRange.DesignatorIndex = 0
pp_data->cap[0]->NotRange.DesignatorIndex = 0
pp_data->cap[0]->NotRange.Reserved3 = 0
pp_data->cap[0]->NotRange.Reserved3 = 0
pp_data->cap[0]->NotRange.DataIndex = 0
pp_data->cap[0]->NotRange.DataIndex = 0
pp_data->cap[0]->NotRange.Reserved4 = 0
pp_data->cap[0]->NotRange.Reserved4 = 0
pp_data->cap[0]->NotButton.HasNull = 1
pp_data->cap[0]->NotButton.HasNull = 1
pp_data->cap[0]->NotButton.Reserved4 = 0x000000
pp_data->cap[0]->NotButton.Reserved4 = 0x000000
pp_data->cap[0]->NotButton.LogicalMin = 0
pp_data->cap[0]->NotButton.LogicalMin = 0
pp_data->cap[0]->NotButton.LogicalMax = 7
pp_data->cap[0]->NotButton.LogicalMax = 7
pp_data->cap[0]->NotButton.PhysicalMin = 0
pp_data->cap[0]->NotButton.PhysicalMin = 0
pp_data->cap[0]->NotButton.PhysicalMax = 315
pp_data->cap[0]->NotButton.PhysicalMax = 315
pp_data->cap[0]->Units = 20
pp_data->cap[0]->Units = 20
pp_data->cap[0]->UnitsExp = 0
pp_data->cap[0]->UnitsExp = 0
pp_data->cap[1]->UsagePage = 0x0009
pp_data->cap[1]->UsagePage = 0x0009
pp_data->cap[1]->ReportID = 0x03
pp_data->cap[1]->ReportID = 0x03
pp_data->cap[1]->BitPosition = 6
pp_data->cap[1]->BitPosition = 6
pp_data->cap[1]->BitSize = 1
pp_data->cap[1]->BitSize = 1
pp_data->cap[1]->ReportCount = 1
pp_data->cap[1]->ReportCount = 1
pp_data->cap[1]->BytePosition = 0x0003
pp_data->cap[1]->BytePosition = 0x0003
pp_data->cap[1]->BitCount = 1
pp_data->cap[1]->BitCount = 1
pp_data->cap[1]->BitField = 0x02
pp_data->cap[1]->BitField = 0x02
pp_data->cap[1]->NextBytePosition = 0x0004
pp_data->cap[1]->NextBytePosition = 0x0004
pp_data->cap[1]->LinkCollection = 0x0000
pp_data->cap[1]->LinkCollection = 0x0000
pp_data->cap[1]->LinkUsagePage = 0x0001
pp_data->cap[1]->LinkUsagePage = 0x0001
pp_data->cap[1]->LinkUsage = 0x0005
pp_data->cap[1]->LinkUsage = 0x0005
pp_data->cap[1]->IsMultipleItemsForArray = 0
pp_data->cap[1]->IsMultipleItemsForArray = 0
pp_data->cap[1]->IsButtonCap = 1
pp_data->cap[1]->IsButtonCap = 1
pp_data->cap[1]->IsPadding = 0
pp_data->cap[1]->IsPadding = 0
pp_data->cap[1]->IsAbsolute = 1
pp_data->cap[1]->IsAbsolute = 1
pp_data->cap[1]->IsRange = 0
pp_data->cap[1]->IsRange = 0
pp_data->cap[1]->IsAlias = 0
pp_data->cap[1]->IsAlias = 0
pp_data->cap[1]->IsStringRange = 0
pp_data->cap[1]->IsStringRange = 0
pp_data->cap[1]->IsDesignatorRange = 0
pp_data->cap[1]->IsDesignatorRange = 0
pp_data->cap[1]->Reserved1 = 0x000000
pp_data->cap[1]->Reserved1 = 0x000000
pp_data->cap[1]->pp_cap->UnknownTokens[0].Token = 0x00
pp_data->cap[1]->pp_cap->UnknownTokens[0].Token = 0x00
pp_data->cap[1]->pp_cap->UnknownTokens[0].Reserved = 0x000000
pp_data->cap[1]->pp_cap->UnknownTokens[0].Reserved = 0x000000
pp_data->cap[1]->pp_cap->UnknownTokens[0].BitField = 0x00000000
pp_data->cap[1]->pp_cap->UnknownTokens[0].BitField = 0x00000000
pp_data->cap[1]->pp_cap->UnknownTokens[1].Token = 0x00
pp_data->cap[1]->pp_cap->UnknownTokens[1].Token = 0x00
pp_data->cap[1]->pp_cap->UnknownTokens[1].Reserved = 0x000000
pp_data->cap[1]->pp_cap->UnknownTokens[1].Reserved = 0x000000
pp_data->cap[1]->pp_cap->UnknownTokens[1].BitField = 0x00000000
pp_data->cap[1]->pp_cap->UnknownTokens[1].BitField = 0x00000000
pp_data->cap[1]->pp_cap->UnknownTokens[2].Token = 0x00
pp_data->cap[1]->pp_cap->UnknownTokens[2].Token = 0x00
pp_data->cap[1]->pp_cap->UnknownTokens[2].Reserved = 0x000000
pp_data->cap[1]->pp_cap->UnknownTokens[2].Reserved = 0x000000
pp_data->cap[1]->pp_cap->UnknownTokens[2].BitField = 0x00000000
pp_data->cap[1]->pp_cap->UnknownTokens[2].BitField = 0x00000000
pp_data->cap[1]->pp_cap->UnknownTokens[3].Token = 0x00
pp_data->cap[1]->pp_cap->UnknownTokens[3].Token = 0x00
pp_data->cap[1]->pp_cap->UnknownTokens[3].Reserved = 0x000000
pp_data->cap[1]->pp_cap->UnknownTokens[3].Reserved = 0x000000
pp_data->cap[1]->pp_cap->UnknownTokens[3].BitField = 0x00000000
pp_data->cap[1]->pp_cap->UnknownTokens[3].BitField = 0x00000000
pp_data->cap[1]->NotRange.Usage = 0x0001
pp_data->cap[1]->NotRange.Usage = 0x0001
pp_data->cap[1]->NotRange.Reserved1 = 0x0001
pp_data->cap[1]->NotRange.Reserved1 = 0x0001
pp_data->cap[1]->NotRange.StringIndex = 0
pp_data->cap[1]->NotRange.StringIndex = 0
pp_data->cap[1]->NotRange.Reserved2 = 0
pp_data->cap[1]->NotRange.Reserved2 = 0
pp_data->cap[1]->NotRange.DesignatorIndex = 0
pp_data->cap[1]->NotRange.DesignatorIndex = 0
pp_data->cap[1]->NotRange.Reserved3 = 0
pp_data->cap[1]->NotRange.Reserved3 = 0
pp_data->cap[1]->NotRange.DataIndex = 1
pp_data->cap[1]->NotRange.DataIndex = 1
pp_data->cap[1]->NotRange.Reserved4 = 1
pp_data->cap[1]->NotRange.Reserved4 = 1
pp_data->cap[1]->Button.LogicalMin = 0
pp_data->cap[1]->Button.LogicalMin = 0
pp_data->cap[1]->Button.LogicalMax = 0
pp_data->cap[1]->Button.LogicalMax = 0
pp_data->cap[1]->Units = 0
pp_data->cap[1]->Units = 0
pp_data->cap[1]->UnitsExp = 0
pp_data->cap[1]->UnitsExp = 0
pp_data->cap[2]->UsagePage = 0x0009
pp_data->cap[2]->UsagePage = 0x0009
pp_data->cap[2]->ReportID = 0x03
pp_data->cap[2]->ReportID = 0x03
pp_data->cap[2]->BitPosition = 5
pp_data->cap[2]->BitPosition = 5
pp_data->cap[2]->BitSize = 1
pp_data->cap[2]->BitSize = 1
pp_data->cap[2]->ReportCount = 1
pp_data->cap[2]->ReportCount = 1
pp_data->cap[2]->BytePosition = 0x0003
pp_data->cap[2]->BytePosition = 0x0003
pp_data->cap[2]->BitCount = 1
pp_data->cap[2]->BitCount = 1
pp_data->cap[2]->BitField = 0x02
pp_data->cap[2]->BitField = 0x02
pp_data->cap[2]->NextBytePosition = 0x0004
pp_data->cap[2]->NextBytePosition = 0x0004
pp_data->cap[2]->LinkCollection = 0x0000
pp_data->cap[2]->LinkCollection = 0x0000
pp_data->cap[2]->LinkUsagePage = 0x0001
pp_data->cap[2]->LinkUsagePage = 0x0001
pp_data->cap[2]->LinkUsage = 0x0005
pp_data->cap[2]->LinkUsage = 0x0005
pp_data->cap[2]->IsMultipleItemsForArray = 0
pp_data->cap[2]->IsMultipleItemsForArray = 0
pp_data->cap[2]->IsButtonCap = 1
pp_data->cap[2]->IsButtonCap = 1
pp_data->cap[2]->IsPadding = 0
pp_data->cap[2]->IsPadding = 0
pp_data->cap[2]->IsAbsolute = 1
pp_data->cap[2]->IsAbsolute = 1
pp_data->cap[2]->IsRange = 0
pp_data->cap[2]->IsRange = 0
pp_data->cap[2]->IsAlias = 0
pp_data->cap[2]->IsAlias = 0
pp_data->cap[2]->IsStringRange = 0
pp_data->cap[2]->IsStringRange = 0
pp_data->cap[2]->IsDesignatorRange = 0
pp_data->cap[2]->IsDesignatorRange = 0
pp_data->cap[2]->Reserved1 = 0x000000
pp_data->cap[2]->Reserved1 = 0x000000
pp_data->cap[2]->pp_cap->UnknownTokens[0].Token = 0x00
pp_data->cap[2]->pp_cap->UnknownTokens[0].Token = 0x00
pp_data->cap[2]->pp_cap->UnknownTokens[0].Reserved = 0x000000
pp_data->cap[2]->pp_cap->UnknownTokens[0].Reserved = 0x000000
pp_data->cap[2]->pp_cap->UnknownTokens[0].BitField = 0x00000000
pp_data->cap[2]->pp_cap->UnknownTokens[0].BitField = 0x00000000
pp_data->cap[2]->pp_cap->UnknownTokens[1].Token = 0x00
pp_data->cap[2]->pp_cap->UnknownTokens[1].Token = 0x00
pp_data->cap[2]->pp_cap->UnknownTokens[1].Reserved = 0x000000
pp_data->cap[2]->pp_cap->UnknownTokens[1].Reserved = 0x000000
pp_data->cap[2]->pp_cap->UnknownTokens[1].BitField = 0x00000000
pp_data->cap[2]->pp_cap->UnknownTokens[1].BitField = 0x00000000
pp_data->cap[2]->pp_cap->UnknownTokens[2].Token = 0x00
pp_data->cap[2]->pp_cap->UnknownTokens[2].Token = 0x00
pp_data->cap[2]->pp_cap->UnknownTokens[2].Reserved = 0x000000
pp_data->cap[2]->pp_cap->UnknownTokens[2].Reserved = 0x000000
pp_data->cap[2]->pp_cap->UnknownTokens[2].BitField = 0x00000000
pp_data->cap[2]->pp_cap->UnknownTokens[2].BitField = 0x00000000
pp_data->cap[2]->pp_cap->UnknownTokens[3].Token = 0x00
pp_data->cap[2]->pp_cap->UnknownTokens[3].Token = 0x00
pp_data->cap[2]->pp_cap->UnknownTokens[3].Reserved = 0x000000
pp_data->cap[2]->pp_cap->UnknownTokens[3].Reserved = 0x000000
pp_data->cap[2]->pp_cap->UnknownTokens[3].BitField = 0x00000000
pp_data->cap[2]->pp_cap->UnknownTokens[3].BitField = 0x00000000
pp_data->cap[2]->NotRange.Usage = 0x0002
pp_data->cap[2]->NotRange.Usage = 0x0002
pp_data->cap[2]->NotRange.Reserved1 = 0x0002
pp_data->cap[2]->NotRange.Reserved1 = 0x0002
pp_data->cap[2]->NotRange.StringIndex = 0
pp_data->cap[2]->NotRange.StringIndex = 0
pp_data->cap[2]->NotRange.Reserved2 = 0
pp_data->cap[2]->NotRange.Reserved2 = 0
pp_data->cap[2]->NotRange.DesignatorIndex = 0
pp_data->cap[2]->NotRange.DesignatorIndex = 0
pp_data->cap[2]->NotRange.Reserved3 = 0
pp_data->cap[2]->NotRange.Reserved3 = 0
pp_data->cap[2]->NotRange.DataIndex = 2
pp_data->cap[2]->NotRange.DataIndex = 2
pp_data->cap[2]->NotRange.Reserved4 = 2
pp_data->cap[2]->NotRange.Reserved4 = 2
pp_data->cap[2]->Button.LogicalMin = 0
pp_data->cap[2]->Button.LogicalMin = 0
pp_data->cap[2]->Button.LogicalMax = 0
pp_data->cap[2]->Button.LogicalMax = 0
pp_data->cap[2]->Units = 0
pp_data->cap[2]->Units = 0
pp_data->cap[2]->UnitsExp = 0
pp_data->cap[2]->UnitsExp = 0
pp_data->cap[3]->UsagePage = 0x0009
pp_data->cap[3]->UsagePage = 0x0009
pp_data->cap[3]->ReportID = 0x03
pp_data->cap[3]->ReportID = 0x03
pp_data->cap[3]->BitPosition = 4
pp_data->cap[3]->BitPosition = 4
pp_data->cap[3]->BitSize = 1
pp_data->cap[3]->BitSize = 1
pp_data->cap[3]->ReportCount = 1
pp_data->cap[3]->ReportCount = 1
pp_data->cap[3]->BytePosition = 0x0003
pp_data->cap[3]->BytePosition = 0x0003
pp_data->cap[3]->BitCount = 1
pp_data->cap[3]->BitCount = 1
pp_data->cap[3]->BitField = 0x02
pp_data->cap[3]->BitField = 0x02
pp_data->cap[3]->NextBytePosition = 0x0004
pp_data->cap[3]->NextBytePosition = 0x0004
pp_data->cap[3]->LinkCollection = 0x0000
pp_data->cap[3]->LinkCollection = 0x0000
pp_data->cap[3]->LinkUsagePage = 0x0001
pp_data->cap[3]->LinkUsagePage = 0x0001
pp_data->cap[3]->LinkUsage = 0x0005
pp_data->cap[3]->LinkUsage = 0x0005
pp_data->cap[3]->IsMultipleItemsForArray = 0
pp_data->cap[3]->IsMultipleItemsForArray = 0
pp_data->cap[3]->IsButtonCap = 1
pp_data->cap[3]->IsButtonCap = 1
pp_data->cap[3]->IsPadding = 0
pp_data->cap[3]->IsPadding = 0
pp_data->cap[3]->IsAbsolute = 1
pp_data->cap[3]->IsAbsolute = 1
pp_data->cap[3]->IsRange = 0
pp_data->cap[3]->IsRange = 0
pp_data->cap[3]->IsAlias = 0
pp_data->cap[3]->IsAlias = 0
pp_data->cap[3]->IsStringRange = 0
pp_data->cap[3]->IsStringRange = 0
pp_data->cap[3]->IsDesignatorRange = 0
pp_data->cap[3]->IsDesignatorRange = 0
pp_data->cap[3]->Reserved1 = 0x000000
pp_data->cap[3]->Reserved1 = 0x000000
pp_data->cap[3]->pp_cap->UnknownTokens[0].Token = 0x00
pp_data->cap[3]->pp_cap->UnknownTokens[0].Token = 0x00
pp_data->cap[3]->pp_cap->UnknownTokens[0].Reserved = 0x000000
pp_data->cap[3]->pp_cap->UnknownTokens[0].Reserved = 0x000000
pp_data->cap[3]->pp_cap->UnknownTokens[0].BitField = 0x00000000
pp_data->cap[3]->pp_cap->UnknownTokens[0].BitField = 0x00000000
pp_data->cap[3]->pp_cap->UnknownTokens[1].Token = 0x00
pp_data->cap[3]->pp_cap->UnknownTokens[1].Token = 0x00
pp_data->cap[3]->pp_cap->UnknownTokens[1].Reserved = 0x000000
pp_data->cap[3]->pp_cap->UnknownTokens[1].Reserved = 0x000000
pp_data->cap[3]->pp_cap->UnknownTokens[1].BitField = 0x00000000
pp_data->cap[3]->pp_cap->UnknownTokens[1].BitField = 0x00000000
pp_data->cap[3]->pp_cap->UnknownTokens[2].Token = 0x00
pp_data->cap[3]->pp_cap->UnknownTokens[2].Token = 0x00
pp_data->cap[3]->pp_cap->UnknownTokens[2].Reserved = 0x000000
pp_data->cap[3]->pp_cap->UnknownTokens[2].Reserved = 0x000000
pp_data->cap[3]->pp_cap->UnknownTokens[2].BitField = 0x00000000
pp_data->cap[3]->pp_cap->UnknownTokens[2].BitField = 0x00000000
pp_data->cap[3]->pp_cap->UnknownTokens[3].Token = 0x00
pp_data->cap[3]->pp_cap->UnknownTokens[3].Token = 0x00
pp_data->cap[3]->pp_cap->UnknownTokens[3].Reserved = 0x000000
pp_data->cap[3]->pp_cap->UnknownTokens[3].Reserved = 0x000000
pp_data->cap[3]->pp_cap->UnknownTokens[3].BitField = 0x00000000
pp_data->cap[3]->pp_cap->UnknownTokens[3].BitField = 0x00000000
pp_data->cap[3]->NotRange.Usage = 0x0004
pp_data->cap[3]->NotRange.Usage = 0x0004
pp_data->cap[3]->NotRange.Reserved1 = 0x0004
pp_data->cap[3]->NotRange.Reserved1 = 0x0004
pp_data->cap[3]->NotRange.StringIndex = 0
pp_data->cap[3]->NotRange.StringIndex = 0
pp_data->cap[3]->NotRange.Reserved2 = 0
pp_data->cap[3]->NotRange.Reserved2 = 0
pp_data->cap[3]->NotRange.DesignatorIndex = 0
pp_data->cap[3]->NotRange.DesignatorIndex = 0
pp_data->cap[3]->NotRange.Reserved3 = 0
pp_data->cap[3]->NotRange.Reserved3 = 0
pp_data->cap[3]->NotRange.DataIndex = 3
pp_data->cap[3]->NotRange.DataIndex = 3
pp_data->cap[3]->NotRange.Reserved4 = 3
pp_data->cap[3]->NotRange.Reserved4 = 3
pp_data->cap[3]->Button.LogicalMin = 0
pp_data->cap[3]->Button.LogicalMin = 0
pp_data->cap[3]->Button.LogicalMax = 0
pp_data->cap[3]->Button.LogicalMax = 0
pp_data->cap[3]->Units = 0
pp_data->cap[3]->Units = 0
pp_data->cap[3]->UnitsExp = 0
pp_data->cap[3]->UnitsExp = 0
pp_data->cap[4]->UsagePage = 0x0009
pp_data->cap[4]->UsagePage = 0x0009
pp_data->cap[4]->ReportID = 0x03
pp_data->cap[4]->ReportID = 0x03
pp_data->cap[4]->BitPosition = 3
pp_data->cap[4]->BitPosition = 3
pp_data->cap[4]->BitSize = 1
pp_data->cap[4]->BitSize = 1
pp_data->cap[4]->ReportCount = 1
pp_data->cap[4]->ReportCount = 1
pp_data->cap[4]->BytePosition = 0x0003
pp_data->cap[4]->BytePosition = 0x0003
pp_data->cap[4]->BitCount = 1
pp_data->cap[4]->BitCount = 1
pp_data->cap[4]->BitField = 0x02
pp_data->cap[4]->BitField = 0x02
pp_data->cap[4]->NextBytePosition = 0x0004
pp_data->cap[4]->NextBytePosition = 0x0004
pp_data->cap[4]->LinkCollection = 0x0000
pp_data->cap[4]->LinkCollection = 0x0000
pp_data->cap[4]->LinkUsagePage = 0x0001
pp_data->cap[4]->LinkUsagePage = 0x0001
pp_data->cap[4]->LinkUsage = 0x0005
pp_data->cap[4]->LinkUsage = 0x0005
pp_data->cap[4]->IsMultipleItemsForArray = 0
pp_data->cap[4]->IsMultipleItemsForArray = 0
pp_data->cap[4]->IsButtonCap = 1
pp_data->cap[4]->IsButtonCap = 1
pp_data->cap[4]->IsPadding = 0
pp_data->cap[4]->IsPadding = 0
pp_data->cap[4]->IsAbsolute = 1
pp_data->cap[4]->IsAbsolute = 1
pp_data->cap[4]->IsRange = 0
pp_data->cap[4]->IsRange = 0
pp_data->cap[4]->IsAlias = 0
pp_data->cap[4]->IsAlias = 0
pp_data->cap[4]->IsStringRange = 0
pp_data->cap[4]->IsStringRange = 0
pp_data->cap[4]->IsDesignatorRange = 0
pp_data->cap[4]->IsDesignatorRange = 0
pp_data->cap[4]->Reserved1 = 0x000000
pp_data->cap[4]->Reserved1 = 0x000000
pp_data->cap[4]->pp_cap->UnknownTokens[0].Token = 0x00
pp_data->cap[4]->pp_cap->UnknownTokens[0].Token = 0x00
pp_data->cap[4]->pp_cap->UnknownTokens[0].Reserved = 0x000000
pp_data->cap[4]->pp_cap->UnknownTokens[0].Reserved = 0x000000
pp_data->cap[4]->pp_cap->UnknownTokens[0].BitField = 0x00000000
pp_data->cap[4]->pp_cap->UnknownTokens[0].BitField = 0x00000000
pp_data->cap[4]->pp_cap->UnknownTokens[1].Token = 0x00
pp_data->cap[4]->pp_cap->UnknownTokens[1].Token = 0x00
pp_data->cap[4]->pp_cap->UnknownTokens[1].Reserved = 0x000000
pp_data->cap[4]->pp_cap->UnknownTokens[1].Reserved = 0x000000
pp_data->cap[4]->pp_cap->UnknownTokens[1].BitField = 0x00000000
pp_data->cap[4]->pp_cap->UnknownTokens[1].BitField = 0x00000000
pp_data->cap[4]->pp_cap->UnknownTokens[2].Token = 0x00
pp_data->cap[4]->pp_cap->UnknownTokens[2].Token = 0x00
pp_data->cap[4]->pp_cap->UnknownTokens[2].Reserved = 0x000000
pp_data->cap[4]->pp_cap->UnknownTokens[2].Reserved = 0x000000
pp_data->cap[4]->pp_cap->UnknownTokens[2].BitField = 0x00000000
pp_data->cap[4]->pp_cap->UnknownTokens[2].BitField = 0x00000000
pp_data->cap[4]->pp_cap->UnknownTokens[3].Token = 0x00
pp_data->cap[4]->pp_cap->UnknownTokens[3].Token = 0x00
pp_data->cap[4]->pp_cap->UnknownTokens[3].Reserved = 0x000000
pp_data->cap[4]->pp_cap->UnknownTokens[3].Reserved = 0x000000
pp_data->cap[4]->pp_cap->UnknownTokens[3].BitField = 0x00000000
pp_data->cap[4]->pp_cap->UnknownTokens[3].BitField = 0x00000000
pp_data->cap[4]->NotRange.Usage = 0x0005
pp_data->cap[4]->NotRange.Usage = 0x0005
pp_data->cap[4]->NotRange.Reserved1 = 0x0005
pp_data->cap[4]->NotRange.Reserved1 = 0x0005
pp_data->cap[4]->NotRange.StringIndex = 0
pp_data->cap[4]->NotRange.StringIndex = 0
pp_data->cap[4]->NotRange.Reserved2 = 0
pp_data->cap[4]->NotRange.Reserved2 = 0
pp_data->cap[4]->NotRange.DesignatorIndex = 0
pp_data->cap[4]->NotRange.DesignatorIndex = 0
pp_data->cap[4]->NotRange.Reserved3 = 0
pp_data->cap[4]->NotRange.Reserved3 = 0
pp_data->cap[4]->NotRange.DataIndex = 4
pp_data->cap[4]->NotRange.DataIndex = 4
pp_data->cap[4]->NotRange.Reserved4 = 4
pp_data->cap[4]->NotRange.Reserved4 = 4
pp_data->cap[4]->Button.LogicalMin = 0
pp_data->cap[4]->Button.LogicalMin = 0
pp_data->cap[4]->Button.LogicalMax = 0
pp_data->cap[4]->Button.LogicalMax = 0
pp_data->cap[4]->Units = 0
pp_data->cap[4]->Units = 0
pp_data->cap[4]->UnitsExp = 0
pp_data->cap[4]->UnitsExp = 0
pp_data->cap[5]->UsagePage = 0x0009
pp_data->cap[5]->UsagePage = 0x0009
pp_data->cap[5]->ReportID = 0x03
pp_data->cap[5]->ReportID = 0x03
pp_data->cap[5]->BitPosition = 2
pp_data->cap[5]->BitPosition = 2
pp_data->cap[5]->BitSize = 1
pp_data->cap[5]->BitSize = 1
pp_data->cap[5]->ReportCount = 1
pp_data->cap[5]->ReportCount = 1
pp_data->cap[5]->BytePosition = 0x0003
pp_data->cap[5]->BytePosition = 0x0003
pp_data->cap[5]->BitCount = 1
pp_data->cap[5]->BitCount = 1
pp_data->cap[5]->BitField = 0x02
pp_data->cap[5]->BitField = 0x02
pp_data->cap[5]->NextBytePosition = 0x0004
pp_data->cap[5]->NextBytePosition = 0x0004
pp_data->cap[5]->LinkCollection = 0x0000
pp_data->cap[5]->LinkCollection = 0x0000
pp_data->cap[5]->LinkUsagePage = 0x0001
pp_data->cap[5]->LinkUsagePage = 0x0001
pp_data->cap[5]->LinkUsage = 0x0005
pp_data->cap[5]->LinkUsage = 0x0005
pp_data->cap[5]->IsMultipleItemsForArray = 0
pp_data->cap[5]->IsMultipleItemsForArray = 0
pp_data->cap[5]->IsButtonCap = 1
pp_data->cap[5]->IsButtonCap = 1
pp_data->cap[5]->IsPadding = 0
pp_data->cap[5]->IsPadding = 0
pp_data->cap[5]->IsAbsolute = 1
pp_data->cap[5]->IsAbsolute = 1
pp_data->cap[5]->IsRange = 0
pp_data->cap[5]->IsRange = 0
pp_data->cap[5]->IsAlias = 0
pp_data->cap[5]->IsAlias = 0
pp_data->cap[5]->IsStringRange = 0
pp_data->cap[5]->IsStringRange = 0
pp_data->cap[5]->IsDesignatorRange = 0
pp_data->cap[5]->IsDesignatorRange = 0
pp_data->cap[5]->Reserved1 = 0x000000
pp_data->cap[5]->Reserved1 = 0x000000
pp_data->cap[5]->pp_cap->UnknownTokens[0].Token = 0x00
pp_data->cap[5]->pp_cap->UnknownTokens[0].Token = 0x00
pp_data->cap[5]->pp_cap->UnknownTokens[0].Reserved = 0x000000
pp_data->cap[5]->pp_cap->UnknownTokens[0].Reserved = 0x000000
pp_data->cap[5]->pp_cap->UnknownTokens[0].BitField = 0x00000000
pp_data->cap[5]->pp_cap->UnknownTokens[0].BitField = 0x00000000
pp_data->cap[5]->pp_cap->UnknownTokens[1].Token = 0x00
pp_data->cap[5]->pp_cap->UnknownTokens[1].Token = 0x00
pp_data->cap[5]->pp_cap->UnknownTokens[1].Reserved = 0x000000
pp_data->cap[5]->pp_cap->UnknownTokens[1].Reserved = 0x000000
pp_data->cap[5]->pp_cap->UnknownTokens[1].BitField = 0x00000000
pp_data->cap[5]->pp_cap->UnknownTokens[1].BitField = 0x00000000
pp_data->cap[5]->pp_cap->UnknownTokens[2].Token = 0x00
pp_data->cap[5]->pp_cap->UnknownTokens[2].Token = 0x00
pp_data->cap[5]->pp_cap->UnknownTokens[2].Reserved = 0x000000
pp_data->cap[5]->pp_cap->UnknownTokens[2].Reserved = 0x000000
pp_data->cap[5]->pp_cap->UnknownTokens[2].BitField = 0x00000000
pp_data->cap[5]->pp_cap->UnknownTokens[2].BitField = 0x00000000
pp_data->cap[5]->pp_cap->UnknownTokens[3].Token = 0x00
pp_data->cap[5]->pp_cap->UnknownTokens[3].Token = 0x00
pp_data->cap[5]->pp_cap->UnknownTokens[3].Reserved = 0x000000
pp_data->cap[5]->pp_cap->UnknownTokens[3].Reserved = 0x000000
pp_data->cap[5]->pp_cap->UnknownTokens[3].BitField = 0x00000000
pp_data->cap[5]->pp_cap->UnknownTokens[3].BitField = 0x00000000
pp_data->cap[5]->NotRange.Usage = 0x0007
pp_data->cap[5]->NotRange.Usage = 0x0007
pp_data->cap[5]->NotRange.Reserved1 = 0x0007
pp_data->cap[5]->NotRange.Reserved1 = 0x0007
pp_data->cap[5]->NotRange.StringIndex = 0
pp_data->cap[5]->NotRange.StringIndex = 0
pp_data->cap[5]->NotRange.Reserved2 = 0
pp_data->cap[5]->NotRange.Reserved2 = 0
pp_data->cap[5]->NotRange.DesignatorIndex = 0
pp_data->cap[5]->NotRange.DesignatorIndex = 0
pp_data->cap[5]->NotRange.Reserved3 = 0
pp_data->cap[5]->NotRange.Reserved3 = 0
pp_data->cap[5]->NotRange.DataIndex = 5
pp_data->cap[5]->NotRange.DataIndex = 5
pp_data->cap[5]->NotRange.Reserved4 = 5
pp_data->cap[5]->NotRange.Reserved4 = 5
pp_data->cap[5]->Button.LogicalMin = 0
pp_data->cap[5]->Button.LogicalMin = 0
pp_data->cap[5]->Button.LogicalMax = 0
pp_data->cap[5]->Button.LogicalMax = 0
pp_data->cap[5]->Units = 0
pp_data->cap[5]->Units = 0
pp_data->cap[5]->UnitsExp = 0
pp_data->cap[5]->UnitsExp = 0
pp_data->cap[6]->UsagePage = 0x0009
pp_data->cap[6]->UsagePage = 0x0009
pp_data->cap[6]->ReportID = 0x03
pp_data->cap[6]->ReportID = 0x03
pp_data->cap[6]->BitPosition = 1
pp_data->cap[6]->BitPosition = 1
pp_data->cap[6]->BitSize = 1
pp_data->cap[6]->BitSize = 1
pp_data->cap[6]->ReportCount = 1
pp_data->cap[6]->ReportCount = 1
pp_data->cap[6]->BytePosition = 0x0003
pp_data->cap[6]->BytePosition = 0x0003
pp_data->cap[6]->BitCount = 1
pp_data->cap[6]->BitCount = 1
pp_data->cap[6]->BitField = 0x02
pp_data->cap[6]->BitField = 0x02
pp_data->cap[6]->NextBytePosition = 0x0004
pp_data->cap[6]->NextBytePosition = 0x0004
pp_data->cap[6]->LinkCollection = 0x0000
pp_data->cap[6]->LinkCollection = 0x0000
pp_data->cap[6]->LinkUsagePage = 0x0001
pp_data->cap[6]->LinkUsagePage = 0x0001
pp_data->cap[6]->LinkUsage = 0x0005
pp_data->cap[6]->LinkUsage = 0x0005
pp_data->cap[6]->IsMultipleItemsForArray = 0
pp_data->cap[6]->IsMultipleItemsForArray = 0
pp_data->cap[6]->IsButtonCap = 1
pp_data->cap[6]->IsButtonCap = 1
pp_data->cap[6]->IsPadding = 0
pp_data->cap[6]->IsPadding = 0
pp_data->cap[6]->IsAbsolute = 1
pp_data->cap[6]->IsAbsolute = 1
pp_data->cap[6]->IsRange = 0
pp_data->cap[6]->IsRange = 0
pp_data->cap[6]->IsAlias = 0
pp_data->cap[6]->IsAlias = 0
pp_data->cap[6]->IsStringRange = 0
pp_data->cap[6]->IsStringRange = 0
pp_data->cap[6]->IsDesignatorRange = 0
pp_data->cap[6]->IsDesignatorRange = 0
pp_data->cap[6]->Reserved1 = 0x000000
pp_data->cap[6]->Reserved1 = 0x000000
pp_data->cap[6]->pp_cap->UnknownTokens[0].Token = 0x00
pp_data->cap[6]->pp_cap->UnknownTokens[0].Token = 0x00
pp_data->cap[6]->pp_cap->UnknownTokens[0].Reserved = 0x000000
pp_data->cap[6]->pp_cap->UnknownTokens[0].Reserved = 0x000000
pp_data->cap[6]->pp_cap->UnknownTokens[0].BitField = 0x00000000
pp_data->cap[6]->pp_cap->UnknownTokens[0].BitField = 0x00000000
pp_data->cap[6]->pp_cap->UnknownTokens[1].Token = 0x00
pp_data->cap[6]->pp_cap->UnknownTokens[1].Token = 0x00
pp_data->cap[6]->pp_cap->UnknownTokens[1].Reserved = 0x000000
pp_data->cap[6]->pp_cap->UnknownTokens[1].Reserved = 0x000000
pp_data->cap[6]->pp_cap->UnknownTokens[1].BitField = 0x00000000
pp_data->cap[6]->pp_cap->UnknownTokens[1].BitField = 0x00000000
pp_data->cap[6]->pp_cap->UnknownTokens[2].Token = 0x00
pp_data->cap[6]->pp_cap->UnknownTokens[2].Token = 0x00
pp_data->cap[6]->pp_cap->UnknownTokens[2].Reserved = 0x000000
pp_data->cap[6]->pp_cap->UnknownTokens[2].Reserved = 0x000000
pp_data->cap[6]->pp_cap->UnknownTokens[2].BitField = 0x00000000
pp_data->cap[6]->pp_cap->UnknownTokens[2].BitField = 0x00000000
pp_data->cap[6]->pp_cap->UnknownTokens[3].Token = 0x00
pp_data->cap[6]->pp_cap->UnknownTokens[3].Token = 0x00
pp_data->cap[6]->pp_cap->UnknownTokens[3].Reserved = 0x000000
pp_data->cap[6]->pp_cap->UnknownTokens[3].Reserved = 0x000000
pp_data->cap[6]->pp_cap->UnknownTokens[3].BitField = 0x00000000
pp_data->cap[6]->pp_cap->UnknownTokens[3].BitField = 0x00000000
pp_data->cap[6]->NotRange.Usage = 0x0008
pp_data->cap[6]->NotRange.Usage = 0x0008
pp_data->cap[6]->NotRange.Reserved1 = 0x0008
pp_data->cap[6]->NotRange.Reserved1 = 0x0008
pp_data->cap[6]->NotRange.StringIndex = 0
pp_data->cap[6]->NotRange.StringIndex = 0
pp_data->cap[6]->NotRange.Reserved2 = 0
pp_data->cap[6]->NotRange.Reserved2 = 0
pp_data->cap[6]->NotRange.DesignatorIndex = 0
pp_data->cap[6]->NotRange.DesignatorIndex = 0
pp_data->cap[6]->NotRange.Reserved3 = 0
pp_data->cap[6]->NotRange.Reserved3 = 0
pp_data->cap[6]->NotRange.DataIndex = 6
pp_data->cap[6]->NotRange.DataIndex = 6
pp_data->cap[6]->NotRange.Reserved4 = 6
pp_data->cap[6]->NotRange.Reserved4 = 6
pp_data->cap[6]->Button.LogicalMin = 0
pp_data->cap[6]->Button.LogicalMin = 0
pp_data->cap[6]->Button.LogicalMax = 0
pp_data->cap[6]->Button.LogicalMax = 0
pp_data->cap[6]->Units = 0
pp_data->cap[6]->Units = 0
pp_data->cap[6]->UnitsExp = 0
pp_data->cap[6]->UnitsExp = 0
pp_data->cap[7]->UsagePage = 0x0009
pp_data->cap[7]->UsagePage = 0x0009
pp_data->cap[7]->ReportID = 0x03
pp_data->cap[7]->ReportID = 0x03
pp_data->cap[7]->BitPosition = 0
pp_data->cap[7]->BitPosition = 0
pp_data->cap[7]->BitSize = 1
pp_data->cap[7]->BitSize = 1
pp_data->cap[7]->ReportCount = 1
pp_data->cap[7]->ReportCount = 1
pp_data->cap[7]->BytePosition = 0x0003
pp_data->cap[7]->BytePosition = 0x0003
pp_data->cap[7]->BitCount = 1
pp_data->cap[7]->BitCount = 1
pp_data->cap[7]->BitField = 0x02
pp_data->cap[7]->BitField = 0x02
pp_data->cap[7]->NextBytePosition = 0x0004
pp_data->cap[7]->NextBytePosition = 0x0004
pp_data->cap[7]->LinkCollection = 0x0000
pp_data->cap[7]->LinkCollection = 0x0000
pp_data->cap[7]->LinkUsagePage = 0x0001
pp_data->cap[7]->LinkUsagePage = 0x0001
pp_data->cap[7]->LinkUsage = 0x0005
pp_data->cap[7]->LinkUsage = 0x0005
pp_data->cap[7]->IsMultipleItemsForArray = 0
pp_data->cap[7]->IsMultipleItemsForArray = 0
pp_data->cap[7]->IsButtonCap = 1
pp_data->cap[7]->IsButtonCap = 1
pp_data->cap[7]->IsPadding = 0
pp_data->cap[7]->IsPadding = 0
pp_data->cap[7]->IsAbsolute = 1
pp_data->cap[7]->IsAbsolute = 1
pp_data->cap[7]->IsRange = 0
pp_data->cap[7]->IsRange = 0
pp_data->cap[7]->IsAlias = 0
pp_data->cap[7]->IsAlias = 0
pp_data->cap[7]->IsStringRange = 0
pp_data->cap[7]->IsStringRange = 0
pp_data->cap[7]->IsDesignatorRange = 0
pp_data->cap[7]->IsDesignatorRange = 0
pp_data->cap[7]->Reserved1 = 0x000000
pp_data->cap[7]->Reserved1 = 0x000000
pp_data->cap[7]->pp_cap->UnknownTokens[0].Token = 0x00
pp_data->cap[7]->pp_cap->UnknownTokens[0].Token = 0x00
pp_data->cap[7]->pp_cap->UnknownTokens[0].Reserved = 0x000000
pp_data->cap[7]->pp_cap->UnknownTokens[0].Reserved = 0x000000
pp_data->cap[7]->pp_cap->UnknownTokens[0].BitField = 0x00000000
pp_data->cap[7]->pp_cap->UnknownTokens[0].BitField = 0x00000000
pp_data->cap[7]->pp_cap->UnknownTokens[1].Token = 0x00
pp_data->cap[7]->pp_cap->UnknownTokens[1].Token = 0x00
pp_data->cap[7]->pp_cap->UnknownTokens[1].Reserved = 0x000000
pp_data->cap[7]->pp_cap->UnknownTokens[1].Reserved = 0x000000
pp_data->cap[7]->pp_cap->UnknownTokens[1].BitField = 0x00000000
pp_data->cap[7]->pp_cap->UnknownTokens[1].BitField = 0x00000000
pp_data->cap[7]->pp_cap->UnknownTokens[2].Token = 0x00
pp_data->cap[7]->pp_cap->UnknownTokens[2].Token = 0x00
pp_data->cap[7]->pp_cap->UnknownTokens[2].Reserved = 0x000000
pp_data->cap[7]->pp_cap->UnknownTokens[2].Reserved = 0x000000
pp_data->cap[7]->pp_cap->UnknownTokens[2].BitField = 0x00000000
pp_data->cap[7]->pp_cap->UnknownTokens[2].BitField = 0x00000000
pp_data->cap[7]->pp_cap->UnknownTokens[3].Token = 0x00
pp_data->cap[7]->pp_cap->UnknownTokens[3].Token = 0x00
pp_data->cap[7]->pp_cap->UnknownTokens[3].Reserved = 0x000000
pp_data->cap[7]->pp_cap->UnknownTokens[3].Reserved = 0x000000
pp_data->cap[7]->pp_cap->UnknownTokens[3].BitField = 0x00000000
pp_data->cap[7]->pp_cap->UnknownTokens[3].BitField = 0x00000000
pp_data->cap[7]->NotRange.Usage = 0x000E
pp_data->cap[7]->NotRange.Usage = 0x000E
pp_data->cap[7]->NotRange.Reserved1 = 0x000E
pp_data->cap[7]->NotRange.Reserved1 = 0x000E
pp_data->cap[7]->NotRange.StringIndex = 0
pp_data->cap[7]->NotRange.StringIndex = 0
pp_data->cap[7]->NotRange.Reserved2 = 0
pp_data->cap[7]->NotRange.Reserved2 = 0
pp_data->cap[7]->NotRange.DesignatorIndex = 0
pp_data->cap[7]->NotRange.DesignatorIndex = 0
pp_data->cap[7]->NotRange.Reserved3 = 0
pp_data->cap[7]->NotRange.Reserved3 = 0
pp_data->cap[7]->NotRange.DataIndex = 7
pp_data->cap[7]->NotRange.DataIndex = 7
pp_data->cap[7]->NotRange.Reserved4 = 7
pp_data->cap[7]->NotRange.Reserved4 = 7
pp_data->cap[7]->Button.LogicalMin = 0
pp_data->cap[7]->Button.LogicalMin = 0
pp_data->cap[7]->Button.LogicalMax = 0
pp_data->cap[7]->Button.LogicalMax = 0
pp_data->cap[7]->Units = 0
pp_data->cap[7]->Units = 0
pp_data->cap[7]->UnitsExp = 0
pp_data->cap[7]->UnitsExp = 0
pp_data->cap[8]->UsagePage = 0x0009
pp_data->cap[8]->UsagePage = 0x0009
pp_data->cap[8]->ReportID = 0x03
pp_data->cap[8]->ReportID = 0x03
pp_data->cap[8]->BitPosition = 7
pp_data->cap[8]->BitPosition = 7
pp_data->cap[8]->BitSize = 1
pp_data->cap[8]->BitSize = 1
pp_data->cap[8]->ReportCount = 1
pp_data->cap[8]->ReportCount = 1
pp_data->cap[8]->BytePosition = 0x0002
pp_data->cap[8]->BytePosition = 0x0002
pp_data->cap[8]->BitCount = 1
pp_data->cap[8]->BitCount = 1
pp_data->cap[8]->BitField = 0x02
pp_data->cap[8]->BitField = 0x02
pp_data->cap[8]->NextBytePosition = 0x0003
pp_data->cap[8]->NextBytePosition = 0x0003
pp_data->cap[8]->LinkCollection = 0x0000
pp_data->cap[8]->LinkCollection = 0x0000
pp_data->cap[8]->LinkUsagePage = 0x0001
pp_data->cap[8]->LinkUsagePage = 0x0001
pp_data->cap[8]->LinkUsage = 0x0005
pp_data->cap[8]->LinkUsage = 0x0005
pp_data->cap[8]->IsMultipleItemsForArray = 0
pp_data->cap[8]->IsMultipleItemsForArray = 0
pp_data->cap[8]->IsButtonCap = 1
pp_data->cap[8]->IsButtonCap = 1
pp_data->cap[8]->IsPadding = 0
pp_data->cap[8]->IsPadding = 0
pp_data->cap[8]->IsAbsolute = 1
pp_data->cap[8]->IsAbsolute = 1
pp_data->cap[8]->IsRange = 0
pp_data->cap[8]->IsRange = 0
pp_data->cap[8]->IsAlias = 0
pp_data->cap[8]->IsAlias = 0
pp_data->cap[8]->IsStringRange = 0
pp_data->cap[8]->IsStringRange = 0
pp_data->cap[8]->IsDesignatorRange = 0
pp_data->cap[8]->IsDesignatorRange = 0
pp_data->cap[8]->Reserved1 = 0x000000
pp_data->cap[8]->Reserved1 = 0x000000
pp_data->cap[8]->pp_cap->UnknownTokens[0].Token = 0x00
pp_data->cap[8]->pp_cap->UnknownTokens[0].Token = 0x00
pp_data->cap[8]->pp_cap->UnknownTokens[0].Reserved = 0x000000
pp_data->cap[8]->pp_cap->UnknownTokens[0].Reserved = 0x000000
pp_data->cap[8]->pp_cap->UnknownTokens[0].BitField = 0x00000000
pp_data->cap[8]->pp_cap->UnknownTokens[0].BitField = 0x00000000
pp_data->cap[8]->pp_cap->UnknownTokens[1].Token = 0x00
pp_data->cap[8]->pp_cap->UnknownTokens[1].Token = 0x00
pp_data->cap[8]->pp_cap->UnknownTokens[1].Reserved = 0x000000
pp_data->cap[8]->pp_cap->UnknownTokens[1].Reserved = 0x000000
pp_data->cap[8]->pp_cap->UnknownTokens[1].BitField = 0x00000000
pp_data->cap[8]->pp_cap->UnknownTokens[1].BitField = 0x00000000
pp_data->cap[8]->pp_cap->UnknownTokens[2].Token = 0x00
pp_data->cap[8]->pp_cap->UnknownTokens[2].Token = 0x00
pp_data->cap[8]->pp_cap->UnknownTokens[2].Reserved = 0x000000
pp_data->cap[8]->pp_cap->UnknownTokens[2].Reserved = 0x000000
pp_data->cap[8]->pp_cap->UnknownTokens[2].BitField = 0x00000000
pp_data->cap[8]->pp_cap->UnknownTokens[2].BitField = 0x00000000
pp_data->cap[8]->pp_cap->UnknownTokens[3].Token = 0x00
pp_data->cap[8]->pp_cap->UnknownTokens[3].Token = 0x00
pp_data->cap[8]->pp_cap->UnknownTokens[3].Reserved = 0x000000
pp_data->cap[8]->pp_cap->UnknownTokens[3].Reserved = 0x000000
pp_data->cap[8]->pp_cap->UnknownTokens[3].BitField = 0x00000000
pp_data->cap[8]->pp_cap->UnknownTokens[3].BitField = 0x00000000
pp_data->cap[8]->NotRange.Usage = 0x000F
pp_data->cap[8]->NotRange.Usage = 0x000F
pp_data->cap[8]->NotRange.Reserved1 = 0x000F
pp_data->cap[8]->NotRange.Reserved1 = 0x000F
pp_data->cap[8]->NotRange.StringIndex = 0
pp_data->cap[8]->NotRange.StringIndex = 0
pp_data->cap[8]->NotRange.Reserved2 = 0
pp_data->cap[8]->NotRange.Reserved2 = 0
pp_data->cap[8]->NotRange.DesignatorIndex = 0
pp_data->cap[8]->NotRange.DesignatorIndex = 0
pp_data->cap[8]->NotRange.Reserved3 = 0
pp_data->cap[8]->NotRange.Reserved3 = 0
pp_data->cap[8]->NotRange.DataIndex = 8
pp_data->cap[8]->NotRange.DataIndex = 8
pp_data->cap[8]->NotRange.Reserved4 = 8
pp_data->cap[8]->NotRange.Reserved4 = 8
pp_data->cap[8]->Button.LogicalMin = 0
pp_data->cap[8]->Button.LogicalMin = 0
pp_data->cap[8]->Button.LogicalMax = 0
pp_data->cap[8]->Button.LogicalMax = 0
pp_data->cap[8]->Units = 0
pp_data->cap[8]->Units = 0
pp_data->cap[8]->UnitsExp = 0
pp_data->cap[8]->UnitsExp = 0
pp_data->cap[9]->UsagePage = 0x0009
pp_data->cap[9]->UsagePage = 0x0009
pp_data->cap[9]->ReportID = 0x03
pp_data->cap[9]->ReportID = 0x03
pp_data->cap[9]->BitPosition = 6
pp_data->cap[9]->BitPosition = 6
pp_data->cap[9]->BitSize = 1
pp_data->cap[9]->BitSize = 1
pp_data->cap[9]->ReportCount = 1
pp_data->cap[9]->ReportCount = 1
pp_data->cap[9]->BytePosition = 0x0002
pp_data->cap[9]->BytePosition = 0x0002
pp_data->cap[9]->BitCount = 1
pp_data->cap[9]->BitCount = 1
pp_data->cap[9]->BitField = 0x02
pp_data->cap[9]->BitField = 0x02
pp_data->cap[9]->NextBytePosition = 0x0003
pp_data->cap[9]->NextBytePosition = 0x0003
pp_data->cap[9]->LinkCollection = 0x0000
pp_data->cap[9]->LinkCollection = 0x0000
pp_data->cap[9]->LinkUsagePage = 0x0001
pp_data->cap[9
pp_data-