I think I’m already plugging directly into the USB ports actually, and no such luck using the getPortNumber() method. My ultimate goal is to predetermine the ordering of the returned Controller array based on USB push-to-talk (PTT) headset devices I have plugged in. I’m using a Java program called jUSB to obtain the Vendor ID and Product ID of headsets I have plugged in. I can also determine the driver “instance” of the attached headsets. For example, everytime I attach a USB headset into a USB port on my computer for the first time, an entry gets placed into the HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Enum \ USB folder of my registry. The Driver field for the entry is:
{36FC9E60-C465-11CF-8056-444553540000} \ xxxx
, where the value xxxx seems to get incremented each time a headset is intially plugged into a USB port that has never had a headset before. One pseudo-pattern I’m seeing right now is that if one USB port has instance (x) of the headset driver, and the second port has instance (x+1), then the lower-numbered instance (i.e. the first USB port) will have its PTT button status correspond to the first Controller in the Controller array.
I say it’s a pseudo-pattern because it’s consistent about 90% of the time for devices with identical vendor and product IDs. However, I also have to account for a monaural headset that has the same vendor ID but different product ID. If I have one of these monaural headsets plugged in and another of a different kind plugged in, the monaural headset’s PTT button status ALWAYS seems to get placed first into the Controller array.
Am I just spinning my wheels with this approach? I was hoping there would be an easier way. Thanks for the help.