mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 08:13:54 -06:00
input: introduce keyboard handler list
Add a linked list of keyboard handlers. Added handlers will go to the head of the list. Removed handlers will be zapped from the list. The head of the list will be used for events. This fixes the keyboard-dead-after-usb-kbd-unplug issue, key events will be re-routed to the ps/2 kbd instead of being discarded. [ v2: fix cut+paste bug found my Markus ] Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Message-id: 1366798118-3248-3-git-send-email-kraxel@redhat.com Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
72711efb58
commit
5a37532d08
4 changed files with 32 additions and 16 deletions
|
@ -415,7 +415,7 @@ void hid_free(HIDState *hs)
|
|||
{
|
||||
switch (hs->kind) {
|
||||
case HID_KEYBOARD:
|
||||
qemu_remove_kbd_event_handler();
|
||||
qemu_remove_kbd_event_handler(hs->kbd.eh_entry);
|
||||
break;
|
||||
case HID_MOUSE:
|
||||
case HID_TABLET:
|
||||
|
@ -431,7 +431,7 @@ void hid_init(HIDState *hs, int kind, HIDEventFunc event)
|
|||
hs->event = event;
|
||||
|
||||
if (hs->kind == HID_KEYBOARD) {
|
||||
qemu_add_kbd_event_handler(hid_keyboard_event, hs);
|
||||
hs->kbd.eh_entry = qemu_add_kbd_event_handler(hid_keyboard_event, hs);
|
||||
} else if (hs->kind == HID_MOUSE) {
|
||||
hs->ptr.eh_entry = qemu_add_mouse_event_handler(hid_pointer_event, hs,
|
||||
0, "QEMU HID Mouse");
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue