I think it is better to use the Nucleo series of evaluation boards from ST now as they have first party support from ST.
So apparently there is limited stock, and someone else that wants one can get it despite me. That's fine; I'll go back later and get another. It's great to see at least one damn company thinking this way.
BTW, they're providing free shipping for a limited time!
As someone who recently started dabbling into MCU programming, I can tell you that a tutorial that shows you all the steps, and has an end result that works and can still be tweaked, is valuable. The DX you may be used to in modern programming is something you can only dream of in the embedded world. Every manufacturer has their own bespoke frameworks, tools, and conventions. The development loop is long: you have to build the thing, flash it to the firmware, reboot the device... You're dealing with raw bytes 99% of the time, so compiler type safety is little help in checking that your program will behave as expected and mistakes are frequent. The global state is huge, and with so little computing/memory resources, you're discouraged from introducing complex abstraction that would help clarify the code or avoid mistakes.
The common feature among these boards is that they have relatively full-featured USB client support in hardware. This is different from other hobbyist embedded boards, such as most Arduinos, for example, which have only a USB virtual serial interface via a discrete chip for the purpose of uploading and debugging firmware. So if you can make the board look like a USB keyboard, and it has enough I/O to handle a matrix of keyboard switches, then with the right firmware like QMK, you've got yourself the building blocks of a custom keyboard.
My info is stale as of the start of the pandemic, when I gave up my mechanical-keyboard hobby and pivoted to DSLR-based videoconferencing.
I don't know all the details, but as I understand it, you don't necessarily need a USB License ($5000/year membership fee) to have a microcontroller running USB-HID across Windows.
Though I haven't figured out all the details of how all the mechanics work, its still interesting to work through even the most "toy" example of the USB-HID stack.
You'd get assigned a VendorID if you have a USB license: That is a USB-IF thing, not a Microsoft thing. Then each licensee gets to assign its own ProductIDs.
There is no authentication in the core USB protocol: A device can declare any VendorID. Major microcontroller board manufacturers such as Sparkfun and PJRC provide specific VendorID/ProductIDs to be used by DIY projects using their boards ... but I've seen some of those being reused by other boards. I have also seen the VendorID 0xf055 used by free open source firmware.
I think if someone wanted to have a very simple interface to control I²C devices over USB, it looks like there's plenty of cheap chips around that expose an I²C bus as a simple USB serial port to your computer.
I remember replacing a resistor on one four-ish years ago, so that I could use it in a usb2 port. (worked fine with a usb 1.1. hub)
I have unfortunately not yet developed any mouse/keyboard app for this. I only use it for https://github.com/tejado/Authorizer
https://github.com/askiiart/android-usb-keyboard
It's my first app, and it definitely shows, but it works. Though, it's definitely missing a fair number of keys.