Nothing really jumped out at me, but I thought I'd make sure before I start implementing my own solution.
Or, somewhat related, does the event system allow me to generate events? generate a key press that didn't actually happen, for example. I didn't see anything that seemed promising, but I may as well make sure.