Il 21/05/2013 10:33, Amos Kong ha scritto: > On Thu, May 16, 2013 at 05:20:37PM +0200, Paolo Bonzini wrote: >> Il 16/05/2013 17:17, Peter Maydell ha scritto: >>> On 16 May 2013 16:09, Paolo Bonzini <pbonz...@redhat.com> wrote: >>>> ... In XWindows, you get a KeyRelease for every KeyPress Event. In X, >>>> it looks something like this: >>>> >>>> PRPRPRPRPRPRPRPR >>> >>> Shouldn't we be abstracting this platform difference >>> out in the ui layer, rather than having to deal with it >>> in the ps2 device model? That is, we should define what >>> our key-repeat model is for the QEMU keyboard-event-handler >>> API, and then make sure all our UI frontends (gtk, sdl, >>> cocoa, etc) do what we require... >> >> Yes, I am asking Amos to check which of our frontends comply. >> >> It needs to be checked in the host, because Linux guests emulate >> autorepeat anyway. Or you can test with FreeDOS. > > Please correct me if something is wrong, thanks. > > When we use VNC/SPICE/SDL, vm Window will captured the key events, > then qemu process the events and transfer to guest through emulated PS2 > device. > > When we hold the key in keyboard of host, real keyboard or host OS will > do auto-repeat. vm Window will transfer repeated events to guest. > In this case, it seems the auto-repeat of emulated PS2 device doesn't > needed.
If you can make emulated autorepeat work also with VNC/SDL/SPICE, it would be much better, because then the guest can choose to enable or disable the autorepeat as desired. That's why I mentioned testing with FreeDOS, which does no emulation. You can find DOS programs to change the typematic rate. Paolo > But when keyboard/host os doesn't support auto-repeat, or we directly > send event from monitor by 'sendkey'. held key could not be repeated > without auto-repeat support of emulated PS2 device. > > > When I use (Lenovo t430s & Fedoar 18 host), when I hold the real key, > qemu will get PPPPPPPR style events queue from host. > > Guest (RHEL6/Win7/WinXp) & (SDL & VNC & SPICE) works well. > > > Others: > 1. I read the keyboard driver in linux kernel, soft_auto-repeat was > implemented in linux ps2 driver is PPPPPPPR style. > > 2. PPPPPPPPR style is described in freescale hardware manual: > http://www.freescale.com/files/microcontrollers/doc/ref_manual/DRM014.pdf > """ > 1.5.9 PS/2 Scan Codes > > Make code or break code is sent when any key is pressed or released. > While a key is pressed, its _make code_ is sent out repeatedly and the > rate depends on the typematic repeat value. > """ > > I will update patches to fix other problem, keep using PPPPPPPR style. >