Justinien Bouron <justinien.bou...@gmail.com> writes: > Depending on your use-case, it might be inconvenient to have qemu grab > the input device immediately upon starting the guest, especially if the > guest takes a while to start in which case it may take a few seconds > before being able to release the device via the toggle combination. > > Added a new bool option to input-linux: grab-on-startup. If true, the > device is grabbed as soon as the guest is started, otherwise it is not > grabbed until the toggle combination is entered. To avoid breaking > existing setups, the default value of grab-on-startup is true, ie. same > behaviour as before this change. > > Signed-off-by: Justinien Bouron <justinien.bou...@gmail.com> > --- > qapi/qom.json | 13 ++++++++++++- > ui/input-linux.c | 20 +++++++++++++++++++- > 2 files changed, 31 insertions(+), 2 deletions(-) > > diff --git a/qapi/qom.json b/qapi/qom.json > index 032c6fa037..50e66d55cc 100644 > --- a/qapi/qom.json > +++ b/qapi/qom.json > @@ -508,13 +508,24 @@ > # @grab-toggle: the key or key combination that toggles device grab > # (default: ctrl-ctrl) > # > +# @grab-on-startup: if true, grab the device immediately upon starting the > +# guest. Otherwise, don't grab the device until the combination is > entered. > +# This does not influence other devices even if grab_all is true, ie. in > the
i.e. > +# unlikely scenario where device1 has grab_all=true + > grab-on-startup=true > +# and device2 has grab-on-startup=false, only device1 is grabbed on > startup, > +# then, once the grab combination is entered, grabbing is toggled off for > +# both devices (because device1 enforces the grab_all property) until the > +# combination is entered again at which point both devices will be > grabbed. > +# (default: true). >From docs/devel/qapi-code-gen.rst section Documentation markup: For legibility, wrap text paragraphs so every line is at most 70 characters long. Separate sentences with two spaces. > + No blank lines in the middle of comment blocks, please. > # Since: 2.6 > ## Together: # @grab-on-startup: if true, grab the device immediately upon starting # the guest. Otherwise, don't grab the device until the # combination is entered. This does not influence other devices # even if grab_all is true, i.e. in the unlikely scenario where # device1 has grab_all=true + grab-on-startup=true and device2 has # grab-on-startup=false, only device1 is grabbed on startup, then, # once the grab combination is entered, grabbing is toggled off # for both devices (because device1 enforces the grab_all # property) until the combination is entered again at which point # both devices will be grabbed. (default: true). # # Since: 2.6 ## > { 'struct': 'InputLinuxProperties', > 'data': { 'evdev': 'str', > '*grab_all': 'bool', > '*repeat': 'bool', > - '*grab-toggle': 'GrabToggleKeys' } } > + '*grab-toggle': 'GrabToggleKeys', > + '*grab-on-startup': 'bool'} } > > ## > # @EventLoopBaseProperties: [...]