Bill Cox wrote: > I looked into how SBL does it. They create a dummy input device and > send keyboard events through it. It's pretty cool, but: > > - It doesn't compile and run in any recent kernel There's a facility in Linux called uinput, which allows userspace programs to read and inject keyboard events. At least there was, as of two years ago. But here's the problem. Speakup is kernel-space, not user-space. I don't think there's an easy way to open /dev/whatever from kernel code or at least, none that I know of. If there were, we could theoretically use uinput, I suppose. It would take a lot of work. We'd have to create a new kernel thread, just to send simulated input events via uinput. But I'm rambling. Hopefully, we'll find an easy way to inject keyboard events from kernel space. Anyway, I looked at both the Speakup code and drivers/char/keyboard.c from my Linux source tree. The only keystroke that Speakup ever simulates is the down arrow. It isn't really obvious from the code, but that's what those calls to k_handler[KT_CUR] are sending. This is only used for the read-all command. Speakup sends those down-arrow keypresses so that the application will keep displaying new lines of text for read-all to read. So all we have to do is figure out how to send down-arrow to the keyboard driver, from kernel space... -- Chris