There are a lot of ways to control REAPER with external hardware controllers: MIDI CC, OSC, MCU… But some found the native features a bit limited and developed their own control surface extensions. A popular free solution is CSI (Control Surface Integration), made by Geoff Waddington, for which the v3 has just been released!
CSI has no GUI, and relies on text files for mapping controllers buttons to actions. Lots of templates for different hardwares already exists, especially for the Behringer X-Touch One, which seems to be a popular solution for REAPER users when used with CSI (there are several videos about these combination).
It is a bit hard to explain CSI in few words, so I will recommend you to check the new ReaperBlog video the new v3 version, or one other CSI tutorials on YouTube showcasing your particular hardware.
I’m not exactly sure what would be more efficient between CSI and ReaLearn for hardware controllers for which CSI templates haven’t been made already, and how much features overlap these extensions have. My guess is that ReaLearn is very good if you want to quickly set/unset controls, because it has a GUI and it supports presets (ReaLearn is in VST format), while CSI would be more for stable set-up.
You can see all the detailed information on the dedicated CSI wiki, written mostly by Funkybot, and give feedback / ask for support on the dedicated forum thread, linked below! Download link is also put on Geoff Waddington signature on first post of the thread. The extension is free, cross-platform and well maintained, so many thx to the contributors!
Feature Image Credits: Geoff Waddington