From c1460488dd4aa3c14b607f2dddc33e9bf59e3509 Mon Sep 17 00:00:00 2001 From: "don.hong" Date: Fri, 19 Aug 2011 18:31:38 +0900 Subject: [PATCH] [Title] Changed input system to be able to handle multiple input devices [Type] Enhancement [Module] [Priority] [CQ#] [Redmine#] [Problem] [Cause] [Solution] [TestCase] --- hw/ps2.c | 2 +- input.c | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/hw/ps2.c b/hw/ps2.c index 762bb00..9ccf8cb 100644 --- a/hw/ps2.c +++ b/hw/ps2.c @@ -596,7 +596,7 @@ void *ps2_kbd_init(void (*update_irq)(void *, int), void *update_arg) s->common.update_arg = update_arg; s->scancode_set = 2; vmstate_register(NULL, 0, &vmstate_ps2_keyboard, s); - qemu_add_kbd_event_handler(ps2_put_keycode, s); + qemu_add_ps2kbd_event_handler(ps2_put_keycode, s); qemu_register_reset(ps2_kbd_reset, s); return s; } diff --git a/input.c b/input.c index ec05548..7e5fa1a 100644 --- a/input.c +++ b/input.c @@ -30,6 +30,8 @@ static QEMUPutKBDEvent *qemu_put_kbd_event; static void *qemu_put_kbd_event_opaque; +static QEMUPutKBDEvent *qemu_put_ps2kbd_event; +static void *qemu_put_ps2kbd_event_opaque; static QTAILQ_HEAD(, QEMUPutLEDEntry) led_handlers = QTAILQ_HEAD_INITIALIZER(led_handlers); static QTAILQ_HEAD(, QEMUPutMouseEntry) mouse_handlers = QTAILQ_HEAD_INITIALIZER(mouse_handlers); @@ -48,6 +50,19 @@ void qemu_remove_kbd_event_handler(void) qemu_put_kbd_event = NULL; } +void qemu_add_ps2kbd_event_handler(QEMUPutKBDEvent *func, void *opaque) +{ + qemu_add_kbd_event_handler(func,opaque); // temporary code for compatibility with Xserver + qemu_put_ps2kbd_event_opaque = opaque; + qemu_put_ps2kbd_event = func; +} + +void qemu_remove_ps2kbd_event_handler(void) +{ + qemu_put_ps2kbd_event_opaque = NULL; + qemu_put_ps2kbd_event = NULL; +} + static void check_mode_change(void) { static int current_is_absolute, current_has_absolute; @@ -134,6 +149,13 @@ void kbd_put_keycode(int keycode) } } +void ps2kbd_put_keycode(int keycode) +{ + if (qemu_put_ps2kbd_event) { + qemu_put_ps2kbd_event(qemu_put_ps2kbd_event_opaque, keycode); + } +} + void kbd_put_ledstate(int ledstate) { QEMUPutLEDEntry *cursor; -- 2.7.4