On Fri, May 25, 2012 at 02:20:33PM +0800, Amos Kong wrote: > On 25/05/12 11:51, Eric Blake wrote: > >On 05/24/2012 09:32 PM, Amos Kong wrote: > >>Convert 'sendkey' to use. do_sendkey() depends on some variables > >>in monitor.c, so reserve qmp_sendkey() to monitor.c > >>Rename 'string' to 'keys', rename 'hold_time' to 'hold-time' > >> > >>Signed-off-by: Amos Kong<ak...@redhat.com> > > > >>+## > >>+# @sendkey: > >>+# > >>+# Send keys to VM. > >>+# > >>+# @keys: key sequence > >>+# @hold-time: time to delay key up events > >>+# > >>+# Returns: Nothing on success > >>+# If key is unknown or redundant, QERR_INVALID_PARAMETER > >>+# If key is invalid, QERR_INVALID_PARAMETER_VALUE > >>+# > >>+# Notes: Send @var{keys} to the emulator. @var{keys} could be the name of > >>the > >>+# key or the raw value in either decimal or hexadecimal format. Use > >>+# @code{-} to press several keys simultaneously. > >>+# > >>+# Since: 0.14.0 > >>+## > >>+{ 'command': 'sendkey', 'data': {'keys': 'str', '*hold-time': 'int'} } > > > >Rather than making 'keys' a free-form string where qemu then has to > >parse '-' to separate keys, should we instead make it a JSON array? For > >example, > > > Anthony, Luiz, Daniel, what's your opinion?
Using a JSON array for the key names does seem like the most natural way to model this. A good rule of thumb is that the implementation of a command should not need to further parse the individual parameter values. Using a magic string encoding instead of the JSON array requires such extra special case parsing. Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|