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 <[email protected]>
> ---
> 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 <[email protected]>
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3226
Virtualization: qemu.org | libvirt.org