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;
}
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);
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;
}
}
+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;