Maybe a UX change to "USB type" is needed?

So I'm looking to make something with my shiny new Teensy 4.0 that can emulate a joystick or a keyboard, but also receive input from the PC using RawHID.

Now unfortunately, there is no Keyboard + RawHID option in the "USB Type" menu, but I have found this old thread that instructs me on how to add my own custom options.
Which is fine, but a pain if I update and all my custom changes are lost (or worse, just break teensy compilation)

It seems to me that maybe a lot of this stuff could be a series of optional checkboxes rather than exclusive-or options.

I'm not familiar with the Arduino IDE API, so I'm not sure how much control you have, but would it be possible to change it so that instead of having to guess at what combinations (keyboard + mouse etc) users might want, allow them to choose themselves? Meaning, I could click once to enable "joystick" and again for "raw hid".

Now ideally, you'd be able to group together any options that are mutually exclusive, and disable any options that are incompatible with your current configuration.

Is the source code for this available somewhere like github that is open to contributions?
 
I've actually considered this several times.

The main problem is each combination needs a unique product ID, and we have only about 100 of them assigned. I've considered ways of also using the BCD version number to add almost 7 more bits. But even then, when options like WebUSB, USB Ethernet, Webcam, 8-32 channel audio are eventually added (not to mention ones I've not yet planned) that already massive number of permutations will keep growing geometrically (if not exponentially).

The Arduino IDE's GUI also does not offer other ways to customize the menu, but that's a lesser problem that can be "easily" overcome with just programming work.
 
Why does the product id need to change?

Is it due to a standard, or a convention amongst Arduino makers? Is it not enough for the product id to be (for instance) "Teensy 4.0"? (by which I mean, a value bound to the board, not the purpose of the board).

Or could it be something customised by the user?
 
Back
Top