Dear all:
      I am trying to send a fake event to input layer of QEMU,
i.e. keyboard and mouse.
      QEMU provides two API to send these input event,
that is, kbd_put_keycode() and kbd_mouse_event() for keyboard and 
mouse, respectively.
And these functions will make a suitable packet for low-level 
hardware, e.g. PS/2 or USB.
      For a PS/2 mouse, there is a call chain  ps2_mouse_event() => 
ps2_mouse_send_packet() => ps2_queue()
when the function kbd_mouse_event() is called.
However, when I make a fake PS/2 mouse packet and directly call 
ps2_queue()
to put the packet to PS/2 queue.
I store the PS2MouseState "s" when 8042 initializes and call 
ps2_queue() to send a event,
for example,
          ps2_queue(&s->common, 0x1001);
          ps2_queue(&s->common, 0);
          ps2_queue(&s->common, 0);
And I also insert some debug  message in ps2_read_data() function,
it works well and reads data from queue correctly..
But the mouse pointer does not move (even right/left click).
I also set the default mouse to "Mouse $0: QEMU PS/2 Mouse" in QEMU 
consloe,
but the result is the same. What else I forgot to signal? How could I 
fix it?
       The second question is when I create a PV Linux (Ubuntu),
the mouse pointer does not move correctly.
The screen (VNC) shows a black point and a mouse pointer,
and their speed does not the same.
In HVM XP, we can use usbdevice='tablet' to fix it,
but the same line does not work in PV Linux. How could I fix it?
      The last question is that does the sound can be shared (mixed) 
between multiple DomainUs?
(The device will be busy when I create a domain.) If can, how could I do?
     Thanks!
Best Regards,
Tang-Hsun Tu