Here's a Start at an R40 Programming Manual
I found the comments in this forum helpful when programming my URC R40. I hope this helps someone else trying to make this gadget work for his/her family.
The URC R40 will work, and you can eventually program it so your family can use your AV System with very little learning.
MISSING Programming Functions
Its easier to program this remote if you know what functions are missing.
Missing Devices -- It's quite possible, even likely, that a very old or very new device will be unrecognized by the remote Quick function. If you cannot find a matching device, you may have to program or "Learn" every physical button on the device. Sometimes this includes the number keys and navigation and select buttons, although these are usually fairly standard.
Missing Device Commands -- In most cases I found that several important commands were missing from my Quick Setup device definitions. Don't expect them all to be there, because they either just weren't programmed, or you actually picked the wrong device even after trying half a dozen partial matches.
Buttons -- You cannot delete a button or relocate a button outside of the current device. The only obvious way to add a button is to define a device. Then you get buttons you can re-Label and redefine. You cannot add buttons to the Main Menu level, only Devices. So any Main Menu level Buttons definitions have to be a on physical device button or perhaps on a fake virtual "system" device you create based on some device you repurpose and rename. There is no way to read back a button learned program function. Worse, there is no way to assign an IR code to a button manually. You have to have a remote that sends the IR device to Learn it on this remote.
Macros -- you cannot copy Macros to a new Button. However, you can refer to a created Macro in another button, so this isn't much of a problem.
Favorites -- You cannot copy and paste favorites from the Main device Main Menu level to say, your cable device. I think you may be able to copy the Favorites from a device to Main. My best idea of a workaround here is to copy the Channel, Navigation and Favorites group from your Cable Device to Main. You can delete all Favorites, so I guess I could delete them all and start over. Maybe try one first.
Power Toggle -- There is no way to "remember" whether a device is powered On or Off. If you don't have a device that has "Power On" and "Power Off" IR commands, you must either order one just to use to Learn an explicit Power On and Power Off commands, or you must give up on writing a Macro to both Power On and Play a Device. This means you cannot do the obvious thing, which is to create a button to Play TV, one to Play Bluray, one to Play FM, one to Play Roku and so on. Also, if you don't have an explicit Power On and Power Off command for every device, the System and Power buttons cannot be reliably programmed. Sometimes they turn some of the devices on, sometimes off. Not having explicit commands for Power and Input will force you to create a URC R40 button design which still requires considerable knowledge component, albeit all on one remote device.
Input Toggle -- If you don't have a way to select an explicit Input via IR command, you will not be able to create a Macro to turn on a particular device, without manually selecting the correct Input, which exposes how units are wired up and Inputs are assigned to components.
Roku 2 and 3 and Sony Touch Control -- You cannot Learn commands because these devices use Bluetooth not IR. You can, however order a Roku remote for about $20 that uses IR commands, and use it to Learn buttons.
Copy -- You cannot copy a Device you laboriously teach commands to a new device. However, you can use commands from another Device in a Macro as a workaround. Still, you have to define the Macros one by one.
Redefine Button -- There is no such command. You need to Erase any Macro and Learned programming, then start over.
Relocate Button to New Device -- Not possible. You can only swap button locations within a device. However, you can use a Macro to refer to a button in another Device as a way to "relocate" the button. It's often easier just to Learn the command in the new Device button.
Device Number -- You can read the device number after it is defined but there is no way to look up the Device number on the Internet, or to add a set of new Device commands from the Internet.
Hints About Working Function
-You can redefine the function of any physical button using the Learn function. The only buttons (I think) you cannot program are the LED buttons to the side and below the LED. This was not clear in the manual. This is probably best done after defining the Device, as that function will set them.
-When Labeling a button, use the navigation keys to delete all (Up), delete character (Down), Move Left or Right rather than the buttons on the sides of the LED Window.
-It is much faster to Label all the buttons before you Learn them, because otherwise you'll have to go up and down the remote menus many more times.
-Be very careful to go all the way back to the Advanced Menu level when working on Macros, Erasing things, and so on. It is very easy to even Erase a Device, thinking you are simply Learning a new button in it.
-You have to Save Macros once in a while rather than continuing to edit them. This may only be after adding a new command, but I never figured it out. It just gets stuck and that is the only way to proceed sometimes.
-I did not find the Test Function to be very useful. I'm not sure it replicates the actual Macro function completely.
-Use Delay .5 s between most Macro functions at the beginning or commands will not complete properly or may be skipped. You can start removing delays later to speed things up.
-When you write a macro the last command should be a GoTo command. Make sure to program it to go back to the exact page (PG1,PG2 etc)where the original command is, because the default is to go back to page 1 (PG1). If this is a macro command located on PG2, to be repeated while watching the TV, and the last entry in the macro is GO TO PG1 (the default), you'll suddenly find yourself executing a different command than you started with. To go to a different page, delete the GOTO PG1 default and replace it by hitting GOTO and paging to the correct page, when Done and Save. The macro will now end with GOTO PG2, not PG1.
-You don't have to go back to the same Device you started in a Macro. Going to a new Device is very useful for getting to the Device menu from a virtual "system" Device menu.
-Don't program a button with both Learned and Macro (L and M) functions. I never figured out what that really does.
-The "P" function of a button is from the Quick Device definition. It is overridden by Learned ("L") or Macro "M" command definitions.
-The Copy All function does a good job of Making Audio and Channel functions consistent. But make sure you don't overwrite a Device that uses different codes.
-Use HDMI Cconsumer Electronics Control (CEC) commands through HDMI cables to turn on and off all Devices, not the System or Power buttons. Often, you can just turn off the HD TV and it will shut or start up most everything else down easily saving lots of headaches. You will need to create explict Power Toggle or On Off buttons somewhere though.
Some useful functions can only be arrived at using Quick Settings and saying No to new Device creation. This is far from obvious.
-Erase always seems to allow individual button function, except for Device level, which erases the whole Device. Note that buttons are never erased, only programming on buttons.
-When you put in a new battery, SKIP the initial device setup. I've no idea what it does and was terrified it would erase ALL programming.
-The System Button is programmed by adding Devices to it using the Quick Menu and saying No a few times. However, if the IR command for the device is actually a power Toggle, this function is unreliable.
- After programming and Saving, the Main Menu button and Exit button will take you straight back to normal remote functioning without going back up all the menus. You can get really lost otherwise.
- Define the Devices with at least Power Toggle, and Next Input, and Play buttons before doing any complex Macro programming. You'll likely need to refer to them.
- A remote IR Repeater like the BAFX Products IR Repeater - Remote control extender Kit works great for sending IR signals around corners or walls. Of course you may prefer one that uses CAT5 cable, and those exist too.
Don't expect this remote to produce single Play functions for all your media components. There is a good chance you will need explicit Power Toggle, and Next Input buttons both at a top virtual device "system" level menu, and within each defined Device.
Once you set up this remote for a Device, you need to actually use it during a program to make sure every function you need is there and works from any starting situation. One or two videos are enough to prove that it works. After that, you can teach your spouse and children how to use this Remote, but not before.
Your family probably will still need to understand which HD TV Input and AV Receiver Input setting combinations correspond to which component selections, unless you are lucky enough to have an explicit Input Number IR command for both HD TV and AV Receiver.
What Programming Model Is It?
Read this when you start asking yourself, "Where AM I in all these prompts"?
This remote is programmed by a fixed, tree structure of prompt and select commands with 3-4 (or more) levels for each programming function except Macro definition. Programming looks the same at the lower levels, but the meaning of selecting a Device, for instance, is TOTALLY controlled by the top prompt levels shown in the LED window top.