How to detect whether keyboard/mouse or controller was interacted with last

What I ended up doing was going into the engine code and collecting the information in several functions in SlateApplication.cpp, and then exposing that information from there. It may not be the most elegant solution, but all other potential solutions failed in one scenario or another.