@@ -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);
}
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 <akong@redhat.com> --- ui/input-legacy.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)