6v6gt, this is quite amazing. But I wonder how it replays formats like RC-5, which toggles a particular bit on successive key presses. Also, would something like the AT24C32 be too small? I ask because there's one of those on every DS3231 module, where it's not needed.
I'm glad you like it. I have more or less duplicated the functionality of a commercial IR learning remote control (Chunghop L181) with some enhancements. With encoding schemes where the remote unit has to "remember" the state of the controlled device, the only option is to spread the function across multiple keys. So, for example, an On/Off button on the original remote would be recorded twice, once as on and once as off.
The original device could, at least under some circumstances, record a mark/space pair in two bits which is extremely efficient. I used 1 byte. If you need to use a lower capacity EEPROM, but retain more or less the same structure, you could reduce the number of stored codes or restrict the maximum length of these codes. Start looking in Stor.h if you want to change these restrictions but it will not be a trivial task. Since the EEPROMs are the same physical size and the cost difference between them is only a few cents, I did not optimise that too much. Obviously, for a mass market commercial product, such cost factors would be more important.