the QEMU frontend (e.g. the VNC server or the SDL window) is in charge of translating user events into emulated hardware ones. Most generally, this will mean emulating a keyboard or mouse IRQ and the associated i/o protocol. Exact details depend on which hardware you want to emulate. For example, when emulating a PC with PS/2 keyboard and mouse, the code in hw/ps2.c will be used. Here's a concrete example: - The VNC server receives packets from the client (see protocol_client_msg in vnc.c). Some of them correspond to keyboard events (processed in key_event() in the same file), which end up calling kbd_put_keycode() after translating the VNC keycode/state into a different key scancode. - kbd_put_keycode() is defined in vl.c and calls the hardware-specific keycode translator. - For PC emulation, this happens to be ps2_put_keycode() defined in hw/ps2.c, and registered at startup by ps2_kbd_init() in the same file. It probably is a different function for different emulated hardware. - The implementation of ps2_put_keycode() will end up enqueue-ing a keycode into a queue then raising an IRQ. - The guest kernel responds to the IRQ by running its keyboard driver code, the latter will try to read data from the PS/2 queue The SDL front-end receives user events differently, but still ends up calling kbd_put_keycode(). Same thing happens for mouse events, and about anything that needs to emulate hardware (e.g. serial/usb/bluetooth/etc...) but implementations and specifics may differ. Hope this helps On Wed, Sep 2, 2009 at 5:55 AM, Amey Moghe wrote: > Hello all, > > I am new to QEMU.While reading about qemu , I came across one statement: > "QEMU does not depend on the presence of graphical output methods on the > host system. Instead, it allows one to access the screen of the guest OS via > VNC. It can also use an emulated serial line, without any screen, with > applicable operating systems." on following link : > > http://en.wikipedia.org/wiki/QEMU > > So please can anybodys tell me how does qemu use VNC server for receiving > events and if yes then how does it receive events from host OS? Or is there > any other way with which QEMU receives input events from host OS?