On 09/26/2014 04:53 AM, Amos Kong wrote: > On Fri, Sep 26, 2014 at 12:36:50PM +0200, Gerd Hoffmann wrote: >> On Fr, 2014-09-26 at 18:23 +0800, Amos Kong wrote: >>> Currently we emit press events of combined keys first, then emit >>> release events by reverse order. But it doesn't match with physical >>> keyboard if the keys contain continued & repeated keys. >>> >>> For example, (qemu) sendkey a-b-b >> >> Hmm, somehow I don't feel like building too much magic into this. >> If you want send Ctrl-somekey twice just use two sendkey commands ... > > > Before this patch, If 'sendkey r-o-o-t', only 'rot' can be inputted.
sendkey with multiple keys is designed for shift modifiers, NOT for repeated keys. 'sendkey r-o-o-t' makes no sense; it is the equivalent of mashing down the 'r', 'o', and 't' keys at once. To send four separate key events, you need to do 'sendkey r; sendkey o; sendkey o; sendkey t'. (Or libvirt should learn some syntactic sugar so you could do 'sendkey r -- o -- o -- t' and sequence it automatically). I don't think this patch is worth the effort. > > People want to panic windows by sending Ctrl-Scrool-Scrool s/Scrool/Scroll/ > http://msdn.microsoft.com/en-us/library/windows/hardware/ff545499(v=vs.85).aspx > But current events order doesn't work. > > In physical keyboard. We can prese Ctrl first, then press & release > Scroll twice, then release Ctrl. It's very common behavior. > Hmm. This almost argues that we need a way to send a press without a release, or a release without a press, rather than trying to make 'sendkey Ctrl-Scroll-Scroll' emulate double scroll pushes all while ctrl is still held down. But this example is MUCH more realistic than 'r-o-o-t', so maybe there is merit to your patch after all. > So this fix just reference the physical implement, if you want to > input same key twice, you have to release it before second pressing. > (here we ignore the auto-repeat feature) > -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature