Support for speakup missing in Ubuntu Maverick linux kernel

Chris Brannon cmbrannon79 at gmail.com
Tue Jun 22 17:40:04 EDT 2010


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



More information about the Speakup mailing list