|
From: <kim...@at...> - 2000-03-05 12:33:21
|
> 2. Multiple input devices (mice, keyboards, etc.): this needs tight
> cooperation with the USB folks to match what they do with non-USB
> drivers (to the extend applicable to the device in question). Only major
> point here is a clean-up of the various mouse drivers (excluding serial
> mice): there should be only one mouse protocol be spoken by /dev/mouse.
> Instead of the different minor devices we should have mouse0...mouseN
> with probing order defined at compile time and a kernel command line
> override.
The USB code uses a trimmed down version of Vojtech Pavlik's event
interface for HID devices. That includes keyboards, mice, tablets, um, ups's
I think, and pretty much anything that has a button on it. The rest of his
complete input patch handles most mice, and joystickts(oh yeah, USB ones
too). In the USB code the input interface is allready tagged as an option.
You need to enable keyboard compatibility and mouse emulation. If you don't
enable those options, then the only way to get input from those devices is
through his event interface device.
I'm currently attempting to slap together an XFree4 driver for Vojtech's
interface in my spare time. I'm hoping that with it you'll be able to have
X use a different keyboard than the kernel. Or, have two different X's use
different keyboards, for multiseat purposes.
As a matter of terminology, I think multiseat is a much better term for a
system where multiple people can sit down and have independant sessions.
Were as multihead could also be just somebody with a 3840x1024 desktop.
Both have their uses, and are /really/ neat, but we do need to tell the
ideas apart.
Back to the existing code. From what I can tell of the internal kernel
interface, all handlers can get a shot at all input, if they feel like it.
Which is consistant with me being able to type and read from the keyboard
evdev at the same time. So, if the console interface were able to handle
this style of input events the whole mess could be handled from either
userland or in the kernel, perhaps with some sort of fallover.
userland: "cat /dev/evdev0 > /dev/consoledev0" effectivly attaches evdev0
to console0. Ugly, but functional.
kernel: input_register_handler(&console_handler); - the same event parser
would be used, so we could get both interfaces for the price of one.
As for that fallover, what I meant by that is, maybe, any device(s) not
explicitly claimed by anything else(any console) would just fall through to
a default. That way no configuration would need to be done in the
default/simplest case. ei: you let the smoke out of your AT/PS2 keyboard
port. No problem, just plug in a USB keyboard and everything is happy.
Then, of course, there is the biggest reason for considering Vojtech's
interface: It's allready in the kernel, via the USB code.
-- Nick Lopez
kim...@at...
|