From: Gerd Hoffmann <kraxel@redhat.com>
To: qemu-devel@nongnu.org
Cc: Marcelo Tosatti <mtosatti@redhat.com>,
Markus Armbruster <armbru@redhat.com>,
Gerd Hoffmann <kraxel@redhat.com>
Subject: [Qemu-devel] [PATCH v2 2/5] qapi: switch x-input-send-event from console to device+head
Date: Tue, 26 Jan 2016 15:07:32 +0100 [thread overview]
Message-ID: <1453817255-10287-2-git-send-email-kraxel@redhat.com> (raw)
In-Reply-To: <1453817255-10287-1-git-send-email-kraxel@redhat.com>
Use display device qdev id and head number instead of console index to
specify the QemuConsole. This makes things consistent with input
devices (for input routing) and vnc server configuration, which both use
display and head too.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Daniel P. Berrange <berrange@redhat.com>
---
qapi-schema.json | 32 +++++++++++++++++---------------
qmp-commands.hx | 17 +++++++++--------
ui/input.c | 15 ++++++++++-----
3 files changed, 36 insertions(+), 28 deletions(-)
diff --git a/qapi-schema.json b/qapi-schema.json
index b3038b2..f87189b 100644
--- a/qapi-schema.json
+++ b/qapi-schema.json
@@ -3775,24 +3775,24 @@
#
# Send input event(s) to guest.
#
-# @console: #optional console to send event(s) to.
-# This parameter can be used to send the input event to
-# specific input devices in case (a) multiple input devices
-# of the same kind are added to the virtual machine and (b)
-# you have configured input routing (see docs/multiseat.txt)
-# for those input devices. If input routing is not
-# configured this parameter has no effect.
-# If @console is missing, only devices that aren't associated
-# with a console are admissible.
-# If @console is specified, it must exist, and both devices
-# associated with that console and devices not associated with a
-# console are admissible, but the former take precedence.
-
-#
+# @device: #optional display device to send event(s) to.
+# @head: #optional head to send event(s) to, in case the
+# display device supports multiple scanouts.
# @events: List of InputEvent union.
#
# Returns: Nothing on success.
#
+# The @display and @head parameters can be used to send the input
+# event to specific input devices in case (a) multiple input devices
+# of the same kind are added to the virtual machine and (b) you have
+# configured input routing (see docs/multiseat.txt) for those input
+# devices. The parameters work exactly like the device and head
+# properties of input devices. If @device is missing, only devices
+# that have no input routing config are admissible. If @device is
+# specified, both input devices with and without input routing config
+# are admissible, but devices with input routing config take
+# precedence.
+
# Since: 2.2
#
# Note: this command is experimental, and not a stable API. Things that
@@ -3802,7 +3802,9 @@
#
##
{ 'command': 'x-input-send-event',
- 'data': { '*console':'int', 'events': [ 'InputEvent' ] } }
+ 'data': { '*device': 'str',
+ '*head' : 'int',
+ 'events' : [ 'InputEvent' ] } }
##
# @NumaOptions
diff --git a/qmp-commands.hx b/qmp-commands.hx
index db072a6..9925fc1 100644
--- a/qmp-commands.hx
+++ b/qmp-commands.hx
@@ -4614,8 +4614,9 @@ Send input event to guest.
Arguments:
-- "console": console index. (json-int, optional)
-- "events": list of input events.
+- "device": display device (json-str, optional)
+- "head": display head (json-int, optional)
+- "events": list of input events
The consoles are visible in the qom tree, under
/backend/console[$index]. They have a device link and head property, so
@@ -4628,15 +4629,15 @@ Example (1):
Press left mouse button.
-> { "execute": "x-input-send-event",
- "arguments": { "console": 0,
+ "arguments": { "device": "video0",
"events": [ { "type": "btn",
- "data" : { "down": true, "button": "Left" } } ] } }
+ "data" : { "down": true, "button": "Left" } } ] } }
<- { "return": {} }
-> { "execute": "x-input-send-event",
- "arguments": { "console": 0,
+ "arguments": { "device": "video0",
"events": [ { "type": "btn",
- "data" : { "down": false, "button": "Left" } } ] } }
+ "data" : { "down": false, "button": "Left" } } ] } }
<- { "return": {} }
Example (2):
@@ -4644,7 +4645,7 @@ Example (2):
Press ctrl-alt-del.
-> { "execute": "x-input-send-event",
- "arguments": { "console": 0, "events": [
+ "arguments": { "events": [
{ "type": "key", "data" : { "down": true,
"key": {"type": "qcode", "data": "ctrl" } } },
{ "type": "key", "data" : { "down": true,
@@ -4658,7 +4659,7 @@ Example (3):
Move mouse pointer to absolute coordinates (20000, 400).
-> { "execute": "x-input-send-event" ,
- "arguments": { "console": 0, "events": [
+ "arguments": { "events": [
{ "type": "abs", "data" : { "axis": "X", "value" : 20000 } },
{ "type": "abs", "data" : { "axis": "Y", "value" : 400 } } ] } }
<- { "return": {} }
diff --git a/ui/input.c b/ui/input.c
index 1409e01..755b90a 100644
--- a/ui/input.c
+++ b/ui/input.c
@@ -118,17 +118,22 @@ qemu_input_find_handler(uint32_t mask, QemuConsole *con)
return NULL;
}
-void qmp_x_input_send_event(bool has_console, int64_t console,
+void qmp_x_input_send_event(bool has_device, const char *device,
+ bool has_head, int64_t head,
InputEventList *events, Error **errp)
{
InputEventList *e;
QemuConsole *con;
+ Error *err = NULL;
con = NULL;
- if (has_console) {
- con = qemu_console_lookup_by_index(console);
- if (!con) {
- error_setg(errp, "console %" PRId64 " not found", console);
+ if (has_device) {
+ if (!has_head) {
+ head = 0;
+ }
+ con = qemu_console_lookup_by_device_name(device, head, &err);
+ if (err) {
+ error_propagate(errp, err);
return;
}
}
--
1.8.3.1
next prev parent reply other threads:[~2016-01-26 14:07 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-26 14:07 [Qemu-devel] [PATCH v2 1/5] console: add & use qemu_console_lookup_by_device_name Gerd Hoffmann
2016-01-26 14:07 ` Gerd Hoffmann [this message]
2016-01-26 16:07 ` [Qemu-devel] [PATCH v2 2/5] qapi: switch x-input-send-event from console to device+head Eric Blake
2016-02-02 12:56 ` Markus Armbruster
2016-01-26 14:07 ` [Qemu-devel] [PATCH v2 3/5] qapi: rename input buttons Gerd Hoffmann
2016-01-26 16:08 ` Eric Blake
2016-01-26 14:07 ` [Qemu-devel] [PATCH v2 4/5] qapi: rename input axises Gerd Hoffmann
2016-01-26 16:08 ` Eric Blake
2016-01-26 16:10 ` Eric Blake
2016-01-26 14:07 ` [Qemu-devel] [PATCH v2 5/5] qapi: promote input-send-event to stable Gerd Hoffmann
2016-01-26 16:11 ` Eric Blake
2016-01-26 16:04 ` [Qemu-devel] [PATCH v2 1/5] console: add & use qemu_console_lookup_by_device_name Eric Blake
2016-02-02 12:56 ` Markus Armbruster
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1453817255-10287-2-git-send-email-kraxel@redhat.com \
--to=kraxel@redhat.com \
--cc=armbru@redhat.com \
--cc=mtosatti@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).