Il 21/05/2013 11:51, Amos Kong ha scritto: > On Tue, May 21, 2013 at 05:04:30PM +0800, Amos Kong wrote: >> On Tue, May 21, 2013 at 10:38:00AM +0200, Paolo Bonzini wrote: >>>> 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. >> >> Yes, if we don't process events from host, the rate set in guest >> doesn't work for SDL/VNC/SPICE/.. >> >> I have fixed it by ignoring continual/repated(same keycode) press >> events. It works now :) > > When I test with linux guest, set rate by 'kbdrate -r ..', > emulated PS2 device can get a keyboard_write (cmd: 0xf3), rate will > be set, auto-repeat rate can be controlled. > > I also tested by Win7, set rate by 'mode con rate=2',emulated PS2 > device can get a keyboard_write (cmd: 0xf3), rate will > be set, auto-repeat rate can be controlled. > > Is it enough to prove the auto-repeat implemented in ps2 is ok? > >> I just tested by Linux guest (set rate by 'kbdrate -s ..'), >> will test with FreeDOS. > > In FreeDOS, I set rate by 'mode con rate=2', got a success prompt. > but emulated PS2 device can't get a keyboard_write (cmd: 0xf3) in init > stage & when I execute mode command. Auto-repeat always use default > rate in qemu-ps2 code. > > FreeDOS bug?
Probably. Testing Windows is enough, I didn't think of it. Which backends did you test among SDL/VNC/SPICE/GTK+? Paolo