Hi!
For the last few weeks I experimented with serial keyboards. I found
that the current solution using specialised kernel drivers is quite
unsatisfactory.
The kernel drivers are IMHO inconvenient to accomodate for changes and
difficult to use. I also do not see any real need for kernel drivers
since we already have a good serial driver; at least for most serial
keyboards.
So I tried a userspace only approach.
My current result can be found here:
http://www.handhelds.org/~nils/kbdd-0.01.tar.bz2
This is far from complete and still needs a lot of work. But following
an old open source tradition to release early, here we go ;)
Theory of operation:
The BlueZ people had a quite similar problem to support keyboards while
implementing Bluetooth HID support. They had the additional problem that
they needed a userspace process to translate between the Bluetooth HID
and Linux input HID.
So they created a quite clean approach, the uinput, i.e. user space
input, device.
Using uinput a userspace process can register and feed an arbitrary
input device, i.e. anything that the Linux input system supports.
kbdd uses this interface and registers a keyboard device, reads the
serial protocol from a serial keyboard, translates the result into
keyboard events and sends them to uinput.
This approach will thus not only work for X11 but also for raw console
and even Qt/embedded - just like the kernel drivers do/did.
Requirements:
You have to have the uinput kernel driver installed and ready for
operation! Along with uinput you will need the input core modules as
well as the keybdev module.
I have added the uinput driver to the hh.org kernel CVS tree some time
ago but I think it is not yet compiled by default.
Todo:
Currently there are just two keyboard types supported, the Compaq/HP
foldadable keyboard and the Snap'n'Type keyboard. Support for more types
can be added quite easily.
One major problem I currently cannot solve are keytables!
This is really driving me crazy and also one reason to publish this work
now: Could someone please help me fixing those tables!?
What happens now is that the english keyboard mapping works quite
perfectly. This is the default kernel keytable and also the default
X-server mapping. But I have German keyboards. With some configurations
I can at least get the Umlauts to work but up to now failed all the time
getting AltGR to work properly!
So here we are ;)
I wish much fun testing it, any feedback is absolutely welcome and if
someone comes up with a solution to this ugly table/mapping problem
PLEASE contact me!
CU
nils faerber
-- kernel concepts Tel: +49-271-771091-12 Dreisbachstr. 24 Fax: +49-271-771091-19 D-57250 Netphen Mob: +49-176-21024535 --Received on Sat Apr 24 2004 - 16:32:35 EDT
This archive was generated by hypermail 2.2.0 : Mon Jul 25 2005 - 18:33:25 EDT