Hi, > + .name = "mouse_move_abs", > + .args_type = "dx_str:s,dy_str:s,dz_str:s?", > + .params = "dx dy [dz]", > + .help = "send mouse move events (absolute coordinates)", > + .mhandler.cmd = do_mouse_move_abs, > + }, > + > +STEXI > +@item mouse_move_abs @var{dx} @var{dy} [@var{dz}]
I think we should drop the dz parameter (you still can send mouse wheel events via mouse_move 0 0 dz), and add a optional console parameter instead ... > +static void do_mouse_move_abs(Monitor *mon, const QDict *qdict) > +{ > + int dx, dy, dz, button; > + const char *dx_str = qdict_get_str(qdict, "dx_str"); > + const char *dy_str = qdict_get_str(qdict, "dy_str"); > + const char *dz_str = qdict_get_try_str(qdict, "dz_str"); > + int weight, height; ... then pick the console here (if specified): QemuConsole *con = NULL; if (qdict_get_try_str(qdict, "console")) { con = qemu_console_lookup_by_index(...) That's a new hmp-only command tough. IIRC there is (or was?) a policy that no new hmp-only commands are allowed. Luiz? A completely different approach would be a qmp command allowing to send any input event. Given that the new input layer already uses qapi-types internally this should be pretty straight forward to do (see InputEvent in qapi-schema.json). cheers, Gerd