提交 857cccac 编写于 作者: M Michael Walle

milkymist: softmmu: fix event handling

Keys which send more than one scancode (esp. windows key) weren't handled
correctly since commit 1ff5eedd. Two events were put into the input event
queue but only one was processed. This fixes this by fetching all pending
events in the callback handler.
Signed-off-by: NMichael Walle <michael@walle.cc>
Cc: Gerd Hoffmann <kraxel@redhat.com>
上级 ab0302ee
......@@ -194,10 +194,13 @@ static void softusb_kbd_hid_datain(HIDState *hs)
return;
}
len = hid_keyboard_poll(hs, s->kbd_hid_buffer, sizeof(s->kbd_hid_buffer));
while (hid_has_events(hs)) {
len = hid_keyboard_poll(hs, s->kbd_hid_buffer,
sizeof(s->kbd_hid_buffer));
if (len == 8) {
softusb_kbd_changed(s);
if (len == 8) {
softusb_kbd_changed(s);
}
}
}
......@@ -212,11 +215,13 @@ static void softusb_mouse_hid_datain(HIDState *hs)
return;
}
len = hid_pointer_poll(hs, s->mouse_hid_buffer,
sizeof(s->mouse_hid_buffer));
while (hid_has_events(hs)) {
len = hid_pointer_poll(hs, s->mouse_hid_buffer,
sizeof(s->mouse_hid_buffer));
if (len == 4) {
softusb_mouse_changed(s);
if (len == 4) {
softusb_mouse_changed(s);
}
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册