On Tue, Jan 3, 2012 at 3:24 PM, Konrad Rzeszutek Wilk
<konrad.wilk@xxxxxxxxxx> wrote:
On Wed, Nov 16, 2011 at 03:26:06PM -0500, John Sherwood wrote:
> Hello,
>
> I'm working on a project and trying to pass through a PS/2 mouse + keyboard
> to a hardware VM. I've played with numerous things (including the obvious,
> using USB), but after finding no alternative, it seems like the best way to
> approach this would be to modify qemu-dm to pipe through data from
> /dev/input/eventwhatever to the keyboard/mouse that qemu provides (and then
> using this version of qemu-dm only for this special case).
That is certainly one way. But you would have an interesting problem that whatever
you type on your physical keyboard would appear in the guest _and_ in the
domain 0.
yeah, I actually tested it and it was quite amusing to watch the keyboard and mouse move on the monitor and in VNC.
>
> I've been looking through the 4.1.0 source, specifically in
> tools/ioemu-qemu-xen, and it appears that I'd want to (for the keyboard)
> pass key codes from /dev/input through the kbd_put_keycode function. From
> what I can tell, I'd probably want to split off a thread to do this
> somewhere in main() in vl.c. I was hoping that I could get some
> confirmation about whether I'm looking in the right places and/or
> suggestions about how to cleanly implement this. Odds are I won't be able
> to go the whole 9 yards and implement configuration options for xm or
> command line switches for qemu-dm, but I would suspect that someone,
> somewhere, someday will also want this kind of ability. If it's already
> possible to pass through PS/2 devices without getting nuts in QEMU, that's
> cool too :)
Can't do that. The PS/2 is one of those legacy beasts that depends on ioports.
But now that I think of it, maybe you can. In the guest config you can specify
the ioports that you want to pass in. I hadn't tried to do this for the keyboard
ports but maybe that will work for you?
I tried forwarding the ioports (off the top of my head, I remember trying 60 and 64) but didn't have any luck - the kb/mouse weren't forwarded despite adding the requisite ioports config as per the docs. I theorized I was leaving off some config for the kernel, but didn't find anything. I agree that it certainly seems like this should work, and if you could elaborate on anything I could have goofed on, that would certainly be great (and hopefully, useful for anyone else who might try this in the future)
Or could you use synergy?