summary refs log tree commit diff stats
path: root/ui/input.c
diff options
context:
space:
mode:
authorGerd Hoffmann <kraxel@redhat.com>2013-12-10 17:09:36 +0100
committerGerd Hoffmann <kraxel@redhat.com>2014-03-05 09:52:04 +0100
commite842c68d449a51ec51a0442aa0fe237d4a4b736d (patch)
tree5f9a6c3dea8e891401f36cb5b463c62660b39762 /ui/input.c
parenta8dfb1c34ffc17d16eebd46442be93d5e8fad44f (diff)
downloadfocaccia-qemu-e842c68d449a51ec51a0442aa0fe237d4a4b736d.tar.gz
focaccia-qemu-e842c68d449a51ec51a0442aa0fe237d4a4b736d.zip
input: move qmp_query_mice to new core
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Diffstat (limited to 'ui/input.c')
-rw-r--r--ui/input.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/ui/input.c b/ui/input.c
index afc037c3e9..162e8d8a5a 100644
--- a/ui/input.c
+++ b/ui/input.c
@@ -1,5 +1,6 @@
 #include "sysemu/sysemu.h"
 #include "qapi-types.h"
+#include "qmp-commands.h"
 #include "trace.h"
 #include "ui/input.h"
 #include "ui/console.h"
@@ -305,3 +306,31 @@ void qemu_remove_mouse_mode_change_notifier(Notifier *notify)
 {
     notifier_remove(notify);
 }
+
+MouseInfoList *qmp_query_mice(Error **errp)
+{
+    MouseInfoList *mice_list = NULL;
+    MouseInfoList *info;
+    QemuInputHandlerState *s;
+    bool current = true;
+
+    QTAILQ_FOREACH(s, &handlers, node) {
+        if (!(s->handler->mask &
+              (INPUT_EVENT_MASK_REL | INPUT_EVENT_MASK_ABS))) {
+            continue;
+        }
+
+        info = g_new0(MouseInfoList, 1);
+        info->value = g_new0(MouseInfo, 1);
+        info->value->index = s->id;
+        info->value->name = g_strdup(s->handler->name);
+        info->value->absolute = s->handler->mask & INPUT_EVENT_MASK_ABS;
+        info->value->current = current;
+
+        current = false;
+        info->next = mice_list;
+        mice_list = info;
+    }
+
+    return mice_list;
+}