Again, obvious to those that are familiar with it, but this will probably save someone a Google or two down the road.
I have two MIDI controllers - a 61 key keyboard, and a smaller controller that I use as a convenient way to manage tracks when recording so that I don't have to stand in front of my PC. I use an M-Audio Oxygen 25 that I picked up for a hundred bucks.
M-Audio Oxygen 25 | Sweetwater.com
It's super convenient, because of these controls here:
Everything is a generic MIDI message, and in Reaper, you can make every key/knob/etc do whatever you want. Reaper has some supported control surfaces built in, but not this guy, so I had to manually edit my actions, and I assume it's this way for most controllers like this. If you record at home, get yourself one of these and a long USB cable and you'll be a happy camper because you won't need to be in front of your workstation to manage your tracks while recording.
Anyway, fire up Reaper once it's connected and powered on. It won't be listed under Control Surfaces (Which is silly, imo), but instead under Audio > Midi Devices. It'll be disabled by default, so enable it.
The MIDI assignment for your controls is managed in the Actions list. (Actions Menu > Show Actions List)
It looks like so:
Programming the actual controller is a total piece of cake. For example, let's make the Play button on the controller play the track. The action for that is "Transport: Play". You can type in whatever you're looking for in the top of the window, and it'll find it. (Note that mine is already setup).
Now that you have the action, click the Add button under "Shortcuts for selected action". The MIDI input window will pop up:
Tap the Play button on the controller, and you'll see it's CC pop up in the window.
That's it. Make sure you save your actions list, and go to town.
This is super useful for custom actions. For example, I have a Mulligan Macro that I like to hit in disgust when I'm recording and I screw something up. It stops recording, deletes the last take, resets the marker and starts recording again with a count-in. I have that assigned to the Undo button on the control surface, and it's always within easy reach.
In the Actions window, click New next to Custom Actions, load up your Keymap, assign it the same way as above, and that's it.
I was just going through and setting up my midi controller again, but I cant find where I save my action list now that I have it set up.
Edit: I figured it out. You export to a save file instead of there being a button labeled save.