My thought actually was always to use MicroSD to store the macros and the conversion tables. Here's why:
If they are stored as a simple text file, that is saved to a specific place, the firmware can just read it and load up the table on the fly. But it would also SERIOUSLY ease the difficulty of a layout modification program that could be deployed alongside. It may even be possible to use the MS provided keyboard layout tool to read and write that file, assuming we can get an output file that is parsable.
So the user could create whatever layout they want, and all they have to do to try it out is to unplug and replug the teensy after defining and saving it.
Macros, replacements, etc. could all be done the same way, though I see replacements as being a bit of a bad idea, in that it would, by necessity, increase complexity considerably. Having to backspace in a system-independent way to erase it, replacing it with new text, only when it shows up on it's own, or in a specific way...it could get pretty complicated pretty quickly. For instance, is "lol" in Lola something that should be expanded, or not? We would have to handle it only when it sees 'space l o l space', and even then, it may be more complicated than I'm seeing.
I think we should definitely NOT include a key logger. As it is, being allowed to hook this thing up to even semi-secure systems is unlikely. If someone finds out there is a keylogger in it, as well, even if it only captures from our keyboard, it will NEVER be approved.
That last is also why the code DEFINITELY needs to be available. If we can't provide it to the IT security group, some of us won't be able to use it.