I recently taught a class about using Teensy as a USB game controller input for your computer. It's about an hour and a half of me rambling about how to connect various inputs, how to use the Teensy USB libraries, and going over example code. You can see the entire presentation as a video below, and I've attached the code examples from the github repo here as well for download.
To get the most out of this class, it is best to have a general familiarity with embedded C programming, or at least basic programming in general, as well as the ability to read basic electronic schematics (Here's a guide on schematics from Sparkfun: https://learn.sparkfun.com/tutorials/how-to-read-a-schematic/ ). Hamster ran two classes last year ( https://www.youtube.com/watch?v=nslHeXYYATM and https://www.youtube.com/watch?v=iAML97O8tHI ) that give a good overview of microcontroller firmware which are a good base of background knowledge used in this class. The code examples will be written for the Teensy, which is built on top of the Arduino IDE. The Teensy libraries are all open source (available on github: https://github.com/PaulStoffregen/cores ), so you can modify them for any native USB capable microcontroller of your choice if you are so inclined.