add input-send-event command

Which allows specification of absolute/relative,
up/down and console parameters.

Suggested by Gerd Hoffman.

Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
Marcelo Tosatti 2014-09-30 18:10:17 -03:00 committed by Gerd Hoffmann
parent e37f202450
commit 50c6617fcb
3 changed files with 117 additions and 0 deletions

View file

@ -122,6 +122,43 @@ qemu_input_find_handler(uint32_t mask, QemuConsole *con)
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;
}
}
for (e = events; e != NULL; e = e->next) {
InputEvent *event = e->value;
qemu_input_event_send(con, event);
}
qemu_input_event_sync();
}
static void qemu_input_transform_abs_rotate(InputEvent *evt)
{
switch (graphic_rotate) {