s->common.update_arg = update_arg;
s->scancode_set = 2;
vmstate_register(NULL, 0, &vmstate_ps2_keyboard, s);
-#ifdef CONFIG_MARU
- qemu_add_ps2kbd_event_handler(ps2_put_keycode, s);
-#else
qemu_add_kbd_event_handler(ps2_put_keycode, s);
-#endif
qemu_register_reset(ps2_kbd_reset, s);
return s;
}
/*
* mainloop_evhandle.c
*
- * Copyright (C) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ * Copyright (C) 2011 - 2013 Samsung Electronics Co., Ltd. All rights reserved.
*
* Contact:
* Kitae Kim <kt920.kim@samsung.com>
#define MLOOP_EVTYPE_USB_DEL 2
#define MLOOP_EVTYPE_INTR_UP 3
#define MLOOP_EVTYPE_INTR_DOWN 4
-#define MLOOP_EVTYPE_HWKEY 5
#define MLOOP_EVTYPE_TOUCH 6
#define MLOOP_EVTYPE_KEYBOARD 7
#define MLOOP_EVTYPE_KBD_ADD 8
qemu_irq_lower((qemu_irq)data);
}
-static void mloop_evhandle_hwkey(struct mloop_evpack* pack)
-{
- int event_type = 0;
- int keycode = 0;
-
- memcpy(&event_type, pack->data, sizeof(int));
- memcpy(&keycode, pack->data + sizeof(int), sizeof(int));
-
- if (KEY_PRESSED == event_type) {
- if (kbd_mouse_is_absolute()) {
- ps2kbd_put_keycode(keycode & 0x7f);
- }
- } else if (KEY_RELEASED == event_type) {
- if (kbd_mouse_is_absolute()) {
- ps2kbd_put_keycode(keycode | 0x80);
- }
- } else {
- ERR("Unknown hardkey event type.[event_type:%d, keycode:%d]\n",
- event_type, keycode);
- }
-}
-
static void mloop_evhandle_touch(struct mloop_evpack* pack)
{
maru_virtio_touchscreen_notify();
case MLOOP_EVTYPE_INTR_DOWN:
mloop_evhandle_intr_down(*(long*)&pack.data[0]);
break;
- case MLOOP_EVTYPE_HWKEY:
- mloop_evhandle_hwkey(&pack);
- break;
case MLOOP_EVTYPE_TOUCH:
mloop_evhandle_touch(&pack);
break;
usbdisk = (USBDevice *)dev;
}
-void mloop_evcmd_hwkey(int event_type, int keycode)
-{
- struct mloop_evpack pack;
-
- pack.type = MLOOP_EVTYPE_HWKEY;
- pack.size = 5 + 8; //TODO: ?
-
- memcpy(pack.data, &event_type, sizeof(int));
- memcpy(pack.data + sizeof(int), &keycode, sizeof(int));
-
- mloop_evsock_send(&mloop, &pack);
-}
-
void mloop_evcmd_touch(void)
{
struct mloop_evpack pack;
/*
* mainloop_evhandle.c
*
- * Copyright (C) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ * Copyright (C) 2011 - 2013 Samsung Electronics Co., Ltd. All rights reserved.
*
* Contact:
* Kitae Kim <kt920.kim@samsung.com>
void mloop_evcmd_raise_intr(void *irq);
void mloop_evcmd_lower_intr(void *irq);
-void mloop_evcmd_hwkey(int event_type, int keycode);
void mloop_evcmd_touch(void);
void mloop_evcmd_keyboard(void *data);
void mloop_evcmd_ramdump(void);
QTAILQ_HEAD_INITIALIZER(mouse_handlers);
static NotifierList mouse_mode_notifiers =
NOTIFIER_LIST_INITIALIZER(mouse_mode_notifiers);
-#ifdef CONFIG_MARU
-// FIXME: merge
-static QTAILQ_HEAD(, QEMUPutKbdEntry) ps2kbd_handlers =
- QTAILQ_HEAD_INITIALIZER(ps2kbd_handlers);
-#endif
static const int key_defs[] = {
[Q_KEY_CODE_SHIFT] = 0x2a,
QTAILQ_REMOVE(&kbd_handlers, entry, next);
}
-#ifdef CONFIG_MARU
-// FIXME: merge
-/* use ps2kbd device as a hardkey device. */
-QEMUPutKbdEntry *qemu_add_ps2kbd_event_handler(QEMUPutKBDEvent *func, void *opaque)
-{
- QEMUPutKbdEntry *entry;
-
- entry = g_malloc0(sizeof(QEMUPutKbdEntry));
- entry->put_kbd = func;
- entry->opaque = opaque;
- QTAILQ_INSERT_HEAD(&ps2kbd_handlers, entry, next);
- return entry;
-}
-
-void qemu_remove_ps2kbd_event_handler(QEMUPutKbdEntry *entry)
-{
- QTAILQ_REMOVE(&ps2kbd_handlers, entry, next);
-}
-#endif
-
static void check_mode_change(void)
{
static int current_is_absolute, current_has_absolute;
entry->put_kbd(entry->opaque, keycode);
}
}
-#ifdef CONFIG_MARU
-// FIXME: merge
-void ps2kbd_put_keycode(int keycode)
-{
- QEMUPutKbdEntry *entry = QTAILQ_FIRST(&ps2kbd_handlers);
-
- if (entry) {
- entry->put_kbd(entry->opaque, keycode);
- }
-}
-#endif
void kbd_put_ledstate(int ledstate)
{
QTAILQ_FOREACH(entry, &mouse_handlers, node) {
/* if mouse event is wheelup ,wheeldown or move
then go to ps2 mouse event(index == 0) */
- if((buttons_state > 3 && entry->index == 0)) {
+ if (buttons_state > 3 && entry->index == 0) {
//INFO("input device: %s, event: %d\n", entry->qemu_put_mouse_event_name, buttons_state);
buttons_state = 0;
mouse_event = entry->qemu_put_mouse_event;
}
}
/* other events(mouse up, down and drag), go to touch screen */
- if(!entry) {
+ if (!entry) {
entry = QTAILQ_FIRST(&mouse_handlers);
mouse_event = entry->qemu_put_mouse_event;
mouse_event_opaque = entry->qemu_put_mouse_event_opaque;