qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [RFC PATCH v2 2/6] vnc: add a new QMP command for changing


From: arei.gonglei
Subject: [Qemu-devel] [RFC PATCH v2 2/6] vnc: add a new QMP command for changing keyboard layout
Date: Wed, 3 Dec 2014 14:55:42 +0800

From: Gonglei <address@hidden>

Example QMP command of Change VNC keyboard layout:
-> { "execute": "change-vnc-kbd-layout",
                "arguments": { "keymap": "de" } }
<- { "return": {}

Signed-off-by: Gonglei <address@hidden>
---
 qapi-schema.json | 17 +++++++++++++++++
 qmp-commands.hx  | 23 +++++++++++++++++++++++
 qmp.c            | 13 +++++++++++++
 3 files changed, 53 insertions(+)

diff --git a/qapi-schema.json b/qapi-schema.json
index 9ffdcf8..0d89b63 100644
--- a/qapi-schema.json
+++ b/qapi-schema.json
@@ -1543,6 +1543,23 @@
 { 'command': 'change-vnc-password', 'data': {'password': 'str'} }
 
 ##
+# @change-vnc-kbd-layout:
+#
+# Change the VNC server keyboard layout.
+#
+# @keymap:  the new VNC keyboard layout to set.
+#
+# Returns: Nothing on success
+#          If VNC is not active, DeviceNotFound.
+#
+# Since: 2.3
+#
+# Notes:  Nothing will be changed on failure.
+#
+##
+{ 'command': 'change-vnc-kbd-layout', 'data': {'keymap': 'str'} }
+
+##
 # @change:
 #
 # This command is multiple commands multiplexed together.
diff --git a/qmp-commands.hx b/qmp-commands.hx
index 718dd92..54fe230 100644
--- a/qmp-commands.hx
+++ b/qmp-commands.hx
@@ -3854,3 +3854,26 @@ Move mouse pointer to absolute coordinates (20000, 400).
 <- { "return": {} }
 
 EQMP
+
+    {
+        .name       = "change-vnc-kbd-layout",
+        .args_type  = "keymap:s",
+        .mhandler.cmd_new = qmp_marshal_input_change_vnc_kbd_layout,
+    },
+
+SQMP
+change-vnc-kbd-layout
+---------------------
+
+Change VNC keyboard layout.
+
+Arguments:
+
+- "keymap": the new VNC keyboard layout to set.
+
+Example:
+
+-> { "execute": "change-vnc-kbd-layout", "arguments": { "keymap": "de" } }
+<- { "return": {} }
+
+EQMP
diff --git a/qmp.c b/qmp.c
index 3fda973..812ded7 100644
--- a/qmp.c
+++ b/qmp.c
@@ -366,6 +366,13 @@ void qmp_change_vnc_password(const char *password, Error 
**errp)
     }
 }
 
+void qmp_change_vnc_kbd_layout(const char *keymap, Error **errp)
+{
+    if (vnc_display_kbd_layout(NULL, keymap) < 0) {
+        error_setg(errp, "keyboard layout '%s' set failed", keymap);
+    }
+}
+
 static void qmp_change_vnc_listen(const char *target, Error **errp)
 {
     QemuOptsList *olist = qemu_find_opts("vnc");
@@ -402,6 +409,12 @@ void qmp_change_vnc_password(const char *password, Error 
**errp)
 {
     error_set(errp, QERR_FEATURE_DISABLED, "vnc");
 }
+
+void qmp_change_vnc_kbd_layout(const char *keymap, Error **errp)
+{
+    error_set(errp, QERR_FEATURE_DISABLED, "vnc");
+}
+
 static void qmp_change_vnc(const char *target, bool has_arg, const char *arg,
                            Error **errp)
 {
-- 
1.7.12.4





reply via email to

[Prev in Thread] Current Thread [Next in Thread]