I have long used programmable remotes from Logitech (now discontinued) and One For All (also other brands made by the same manufacturer). As I transitioned from a cable provided Tivo to Roku as my primary set-top box, I researched what pre-coded buttons I might be able to use. I have found many apps to have IR codes internally in at least some versions of Roku. Accessing them will require jumping through some programming hoops and not all apps are going to be supported by all Roku models. Although there are likely other methods, I use a programming method supported by a user group called JP1 (http://www.hifi-remote.com) which makes use of a connector inside the battery compartment of most One For All remotes.
Here is a list of the Apps known to have direct access. I've programmed my remotes with a few of our most used apps. Unfortunately, one that is missing is my primarily used app, YouTube TV.
App: Netflix
App: Pandora
App: Amazon
App: YuppTV
App: DEEZER
App: Crackle
App: SlingTV
App: Rdio
App: YouTube
App: Starz
App: DirecTV NOW
App: Cinema Now
App: Google play
App: Hulu
App: HBO Now
App: Showtime
App: Red Bull TV
App: Spotify
App: TED
App: PS Vue
App: Roku Channel
App: The CW
App: HappyKids.tv
App: CBS All Access
App: WWE Network
App: Disney
App: Walmart Video
App: ESPN