Commit 2e377f17 wrongly overturned the release order of combined keys, it caused some Windows guests can't be paniced by "virsh send-key <domain> KEY_RIGHTCTRL KEY_SCROLLLOCK KEY_SCROLLLOCK"
The press event order should be different with release order. Signed-off-by: Amos Kong <ak...@redhat.com> --- ui/input-legacy.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/ui/input-legacy.c b/ui/input-legacy.c index 3025f50..1e1f14c 100644 --- a/ui/input-legacy.c +++ b/ui/input-legacy.c @@ -85,16 +85,23 @@ void qmp_send_key(KeyValueList *keys, bool has_hold_time, int64_t hold_time, Error **errp) { KeyValueList *p; + int count, i; if (!has_hold_time) { hold_time = 0; /* use default */ } + count = 0; for (p = keys; p != NULL; p = p->next) { qemu_input_event_send_key(NULL, copy_key_value(p->value), true); qemu_input_event_send_key_delay(hold_time); + count++; } - for (p = keys; p != NULL; p = p->next) { + while (count--) { + i = 0; + for (p = keys; p != NULL && i < count; p = p->next) { + i++; + } qemu_input_event_send_key(NULL, copy_key_value(p->value), false); qemu_input_event_send_key_delay(hold_time); } -- 1.9.3