The IR stuff is just so close to the hardware, timing is tight. So it cannot do too much in the button interrupt handler. So it gets offloaded to the next level, which is the display handler (also running as an interrupt handler). And by then it's too late to use certain conditionals where I'd like. And it all has to run without delaying buttons fed to the player, or the UI seems slow. But yet it still has to maintain sequence and timing of the original presses, plus translated macros, as they're fed to the player. Plus, some "buttons" pop-up menus and whatnot. Etc..
It would be easier to be fancy if I chewed up 10-20KB more memory for separate threads and fancier data structures, but I don't really want that much system loading for it..
blah blah blah blah
And the darned thing breaks
so easily when any of the above considerations is forgotten..
Cheers