Is it possible for a USB device to tell the host which alternate interfaces to use, either during startup or any other time?
I know about the GET_INTERFACE and SET_INTERFACE interface requests, but my impression is that the host will just assume alternate interface 0 is in effect on startup -- at least for HID devices. I'm hoping to find some way around this without writing a host driver.
Background: I'm working on a personal project involving converting various PS/2 and other devices to USB (HID). Normally you wouldn't need a driver for this since OS's tend to support such devices natively. However, for the keyboard interface I would like to provide several NKRO options, so some keyboard interfaces will have more than the standard 6+modifier keys. This works fine natively in the OS's I've tried, but I would like to allow the user to choose which keyboard interface to use. Ideally this would be saved on the device and take effect again on startup, so I don't need to provide a driver for the device.
No, host, (strictly speaking - HID driver in your case) by defaults always selects first interface.
But, you can change order in which your device sends interface info during enumeration, so selected interface always will be the first.