qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 3/3] qapi: convert sendkey


From: Amos Kong
Subject: Re: [Qemu-devel] [PATCH 3/3] qapi: convert sendkey
Date: Wed, 30 May 2012 10:48:05 -0400 (EDT)

----- Original Message -----
> On Wed, 30 May 2012 18:17:54 +0800
> Amos Kong <address@hidden> wrote:
> 
> > On 29/05/12 21:24, Luiz Capitulino wrote:
> > > On Tue, 29 May 2012 20:17:53 +0800
> > > Amos Kong<address@hidden>  wrote:
> > >
> > >> On 05/29/2012 07:57 PM, Amos Kong wrote:
> > >>> On 05/25/2012 09:14 PM, Anthony Liguori wrote:
> > >>>> On 05/24/2012 10:51 PM, 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<address@hidden>
> > >>>>>
> > >>>>>> +## +# @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,
> > >>>>>
> > >>>>> { "execute":"sendky", "data":{ "keys":["ctrl", "alt", "del"],
> > >>>>> "hold-time":200 } }
> > >>>>
> > >>>> Actually, we should do:
> > >>
> > >>
> > >>>> { 'enum': 'KeyCode', 'data': [ 'map', 'exclam', 'at',
> > >>>> 'numbersign',
> > >>>> ...] }
> > >>>>
> > >>>> { 'command': 'sendkey', 'data': { 'keys': [ 'KeyCode' ],
> > >>>> '*hold-time': 'int' } }
> > >>
> > >> ^^^
> > >>
> > >> It doesn't work.  "KeyCodeList" could not be defined
> > >> automatically. I
> > >> try to add a type definition to make it works, is it ok?
> > >
> > > Looks like we don't support enum lists yet, so the right thing to
> > > do is to add it.
> > > I can do it if you want, or you could give it a try.
> > 
> > I would like to try it.
> 
> You'll have to look in scripts/qapi-types.py and maybe in
> scripts/qapi-commands.py too.

Today I already started to read docs/qapi-code-gen.txt and
'hack' qapi-types.py and qapi-visit.py

Currently the KeycodesList can be generated, I'm trying to
make the change harmonious with 'type' functions.


> Please, don't hesitate to ping me if you have questions.

Ok. As you know, we live in different timezones, we almost could not
touch each other in the work time :)

I would send you email when I find other problem, thanks again!


> > >> { 'enum': 'Keycode',
> > >>    'data': [ 'shift', 'shift_r', 'alt', 'alt_r', 'altgr',
> > >>    'altgr_r',
> > >>              ......
> > >>              'lf', 'help', 'meta_l', 'meta_r', 'compose' ] }
> > >>
> > >> { 'type': 'KeyCodes',
> > >>    'data': { 'name', 'Keycode' } }
> > >>
> > >> { 'command': 'sendkey',
> > >>    'data': { 'keys': ['KeyCodes'], '*hold-time': 'int' } }
> > >>
> > >>
> > >> New problems: special character '<' could not be added to enum,
> > >> other
> > >> characters are fine.
> > >
> > > Shouldn't the enum contain only symbolic names?
> > 
> > qapi-types.h:
> > typedef enum KeyCodes
> > {
> >      KEY_CODES_SHIFT = 0,
> >      KEY_CODES_SHIFT_R = 1,
> >      KEY_CODES_ALT = 2,
> >      ....
> >      KEY_CODES_< = ..
> > 
> >      ^^^ problem should exist here
> 
> That's because you have something like '<' in the enum list, right? I
> think
> we can call it 'less-than', no?

yes, it should be ok. Need to convert inputted '<' to 'less-than'.
I will try tomorrow.


Amos.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]