* [Qemu-devel] [PATCH v2] add input-send-event command
@ 2014-06-17 16:22 Marcelo Tosatti
2014-06-17 17:05 ` Eric Blake
2014-06-19 10:51 ` Gerd Hoffmann
0 siblings, 2 replies; 3+ messages in thread
From: Marcelo Tosatti @ 2014-06-17 16:22 UTC (permalink / raw)
To: Gerd Hoffmann; +Cc: Luiz Capitulino, emu-devel
Which allows specification of absolute/relative,
up/down and console parameters.
Suggested by Gerd Hoffman.
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
---
qapi-schema.json | 18 +++++++++++++++
qmp-commands.hx | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
ui/input.c | 31 +++++++++++++++++++++++++++
3 files changed, 112 insertions(+)
Index: qemu/qapi-schema.json
===================================================================
--- qemu.orig/qapi-schema.json 2014-06-17 12:49:55.427233304 -0300
+++ qemu/qapi-schema.json 2014-06-17 12:49:56.525230400 -0300
@@ -4722,3 +4722,21 @@
'btn' : 'InputBtnEvent',
'rel' : 'InputMoveEvent',
'abs' : 'InputMoveEvent' } }
+
+##
+# @input-send-event
+#
+# Send input event(s) to guest.
+#
+# @console: Which console to send event(s) to.
+#
+# @events: List of InputEvent union.
+#
+# Returns: Nothing on success.
+#
+# Since: 2.1
+#
+##
+{ 'command': 'input-send-event',
+ 'data': { 'console':'int', 'events': [ 'InputEvent' ] } }
+
Index: qemu/qmp-commands.hx
===================================================================
--- qemu.orig/qmp-commands.hx 2014-06-17 12:49:55.429233299 -0300
+++ qemu/qmp-commands.hx 2014-06-17 13:16:42.073873217 -0300
@@ -3572,3 +3572,66 @@
} } ] }
EQMP
+
+ {
+ .name = "input-send-event",
+ .args_type = "console:i,events:q",
+ .mhandler.cmd_new = qmp_marshal_input_input_send_event,
+ },
+
+SQMP
+@input-send-event
+-----------------
+
+Send input event to guest.
+
+Arguments:
+
+- "console": console index.
+- "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
+its possible to map which console belongs to which device and display.
+
+Example (1):
+
+Press left mouse button.
+
+-> { "execute": "input-send-event",
+ "arguments": { "console": 0,
+ "events": [ { "type": "btn",
+ "data" : { "down": true, "button": "Left" } } } }
+<- { "return": {} }
+
+-> { "execute": "input-send-event",
+ "arguments": { "console": 0,
+ "events": [ { "type": "btn",
+ "data" : { "down": false, "button": "Left" } } } }
+<- { "return": {} }
+
+Example (2):
+
+Press ctrl-alt-del.
+
+-> { "execute": "input-send-event",
+ "arguments": { "console": 0, "events": [
+ { "type": "key", "data" : { "down": true,
+ "key": {"type": "qcode", "data": "ctrl" } } },
+ { "type": "key", "data" : { "down": true,
+ "key": {"type": "qcode", "data": "alt" } } },
+ { "type": "key", "data" : { "down": true,
+ "key": {"type": "qcode", "data": "delete" } } } ] } }
+<- { "return": {} }
+
+Example (3):
+
+Move mouse pointer to absolute coordinates (20000, 400).
+
+-> { "execute": "input-send-event" ,
+ "arguments": { "console": 0, "events": [
+ { "type": "abs", "data" : { "axis": "X", "value" : 20000 } },
+ { "type": "abs", "data" : { "axis": "Y", "value" : 400 } } ] } }
+<- { "return": {} }
+
+EQMP
Index: qemu/ui/input.c
===================================================================
--- qemu.orig/ui/input.c 2014-06-17 12:43:43.000000000 -0300
+++ qemu/ui/input.c 2014-06-17 13:17:16.403779074 -0300
@@ -102,6 +102,37 @@
return NULL;
}
+void qmp_input_send_event(int64_t console, InputEventList *events,
+ Error **errp)
+{
+ InputEventList *e;
+ QemuConsole *con;
+
+ con = qemu_console_lookup_by_index(console);
+ if (!con) {
+ error_setg(errp, "console %" PRId64 " not found", console);
+ return;
+ }
+
+ if (!runstate_is_running() && !runstate_check(RUN_STATE_SUSPENDED)) {
+ error_setg(errp, "VM not running");
+ return;
+ }
+
+ for (e = events; e != NULL; e = e->next) {
+ InputEvent *event = e->value;
+
+ if (!qemu_input_find_handler(1 << event->kind, con)) {
+ error_setg(errp, "Input handler not found for "
+ "event type %s",
+ InputEventKind_lookup[event->kind]);
+ return;
+ }
+ qemu_input_event_send(con, event);
+ }
+ qemu_input_event_sync();
+}
+
static void qemu_input_transform_abs_rotate(InputEvent *evt)
{
switch (graphic_rotate) {
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [Qemu-devel] [PATCH v2] add input-send-event command
2014-06-17 16:22 [Qemu-devel] [PATCH v2] add input-send-event command Marcelo Tosatti
@ 2014-06-17 17:05 ` Eric Blake
2014-06-19 10:51 ` Gerd Hoffmann
1 sibling, 0 replies; 3+ messages in thread
From: Eric Blake @ 2014-06-17 17:05 UTC (permalink / raw)
To: Marcelo Tosatti, Gerd Hoffmann; +Cc: emu-devel, Luiz Capitulino
[-- Attachment #1: Type: text/plain, Size: 1371 bytes --]
On 06/17/2014 10:22 AM, Marcelo Tosatti wrote:
>
> Which allows specification of absolute/relative,
> up/down and console parameters.
>
> Suggested by Gerd Hoffman.
>
> Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
>
> ---
> qapi-schema.json | 18 +++++++++++++++
> qmp-commands.hx | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
> ui/input.c | 31 +++++++++++++++++++++++++++
> 3 files changed, 112 insertions(+)
> +
> +Example (1):
> +
> +Press left mouse button.
Maybe:
Press, then later release, left mouse button.
> +
> +-> { "execute": "input-send-event",
> + "arguments": { "console": 0,
> + "events": [ { "type": "btn",
> + "data" : { "down": true, "button": "Left" } } } }
> +<- { "return": {} }
> +
> +-> { "execute": "input-send-event",
> + "arguments": { "console": 0,
> + "events": [ { "type": "btn",
> + "data" : { "down": false, "button": "Left" } } } }
> +<- { "return": {} }
to make it clear that both command/response sequences are part of the
same example.
but that's cosmetic, so whether or not you change it, I can live with:
Reviewed-by: Eric Blake <eblake@redhat.com>
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 604 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [Qemu-devel] [PATCH v2] add input-send-event command
2014-06-17 16:22 [Qemu-devel] [PATCH v2] add input-send-event command Marcelo Tosatti
2014-06-17 17:05 ` Eric Blake
@ 2014-06-19 10:51 ` Gerd Hoffmann
1 sibling, 0 replies; 3+ messages in thread
From: Gerd Hoffmann @ 2014-06-19 10:51 UTC (permalink / raw)
To: Marcelo Tosatti; +Cc: emu-devel, Luiz Capitulino
On Di, 2014-06-17 at 13:22 -0300, Marcelo Tosatti wrote:
> Which allows specification of absolute/relative,
> up/down and console parameters.
>
> Suggested by Gerd Hoffman.
>
> Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Added to input patch queue.
thanks,
Gerd
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2014-06-19 10:51 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-06-17 16:22 [Qemu-devel] [PATCH v2] add input-send-event command Marcelo Tosatti
2014-06-17 17:05 ` Eric Blake
2014-06-19 10:51 ` Gerd Hoffmann
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).