On 2/24/21 7:52 AM, Kevin Wolf wrote: > This adds a QAPI schema for the properties of the input-* objects. > > ui.json cannot be included in qom.json because the storage daemon can't > use it, so move GrabToggleKeys to common.json. > > Signed-off-by: Kevin Wolf <kwolf@xxxxxxxxxx> > --- > qapi/common.json | 12 ++++++++++ > qapi/qom.json | 58 ++++++++++++++++++++++++++++++++++++++++++++++++ > qapi/ui.json | 13 +---------- > 3 files changed, 71 insertions(+), 12 deletions(-) > > +## > +# @InputBarrierProperties: > +# > +# Properties for input-barrier objects. > +# > +# @name: the screen name as declared in the screens section of barrier.conf > +# > +# @server: hostname of the Barrier server (default: "localhost") > +# > +# @port: TCP port of the Barrier server (default: "24800") I can understand this being a string (if non-numeric, it can be treated as a well-known service name instead), but... > +# > +# @x-origin: x coordinate of the leftmost pixel on the guest screen > +# (default: "0") ...why are these other fields a string instead of an integer? But you are just doing faithful translation of what we already have. Bummer - our naming for this member implies that it is experimental, which is a misnomer (it is quite stable, when viewed in tandem with y-origin). Not your fault. Would 'origin-x' and 'origin-y' be any better as new aliases in a followup patch? > +# > +# @y-origin: y coordinate of he topmost pixel on the guest screen (default: "0") "the", long line > +# > +# @width: the width of secondary screen in pixels (default: "1920") > +# > +# @height: the height of secondary screen in pixels (default: "1080") > +# > +# Since: 4.2 > +## > +{ 'struct': 'InputBarrierProperties', > + 'data': { 'name': 'str', > + '*server': 'str', > + '*port': 'str', > + '*x-origin': 'str', > + '*y-origin': 'str', > + '*width': 'str', > + '*height': 'str' } } Matches ui/input-barrier.c:input_barrier_class_init(). > + > +## > +# @InputLinuxProperties: > +# > +# Properties for input-linux objects. > +# > +# @evdev: the path of the host evdev device to use > +# > +# @grab_all: if true, grab is toggled for all devices (e.g. both keyboard and > +# mouse) instead of just one device (default: false) We have inconsistent naming within this object (see grab-toggle); a good followup would be an alias for 'grab-all'. > +# > +# @repeat: enables auto-repeat events (default: false) > +# > +# @grab-toggle: the key or key combination that toggles device grab > +# (default: ctrl-ctrl) > +# > +# Since: 2.6 > +## > +{ 'struct': 'InputLinuxProperties', > + 'data': { 'evdev': 'str', > + '*grab_all': 'bool', > + '*repeat': 'bool', > + '*grab-toggle': 'GrabToggleKeys' } } matches ui/input-linux.c. > + > ## > # @IothreadProperties: > # > @@ -689,6 +743,8 @@ > 'filter-redirector', > 'filter-replay', > 'filter-rewriter', > + 'input-barrier', > + 'input-linux', > 'iothread', > 'memory-backend-file', > 'memory-backend-memfd', > @@ -741,6 +797,8 @@ > 'filter-redirector': 'FilterRedirectorProperties', > 'filter-replay': 'NetfilterProperties', > 'filter-rewriter': 'FilterRewriterProperties', > + 'input-barrier': 'InputBarrierProperties', > + 'input-linux': 'InputLinuxProperties', > 'iothread': 'IothreadProperties', > 'memory-backend-file': 'MemoryBackendFileProperties', > 'memory-backend-memfd': 'MemoryBackendMemfdProperties', Reviewed-by: Eric Blake <eblake@xxxxxxxxxx> -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3226 Virtualization: qemu.org | libvirt.org