[virt-tools-list] [PATCH v2 3/7] Move spice_hotkey_to_gtk_accelerator() to util

Marc-André Lureau marcandre.lureau at gmail.com
Tue Nov 27 19:15:07 UTC 2012


To be compatible with RHEVM, VirtViewerFile hotkey format will use the
Spice Controller format.
---
 src/remote-viewer.c    | 115 +------------------------------------------------
 src/virt-viewer-util.c | 113 ++++++++++++++++++++++++++++++++++++++++++++++++
 src/virt-viewer-util.h |   2 +
 3 files changed, 116 insertions(+), 114 deletions(-)

diff --git a/src/remote-viewer.c b/src/remote-viewer.c
index 55df838..72b1ca8 100644
--- a/src/remote-viewer.c
+++ b/src/remote-viewer.c
@@ -435,119 +435,6 @@ remote_viewer_get_spice_session(RemoteViewer *self)
     return session;
 }
 
-static gchar *
-ctrl_key_to_gtk_key(const gchar *key)
-{
-    int i;
-
-    static const struct {
-        const char *ctrl;
-        const char *gtk;
-    } keys[] = {
-        /* FIXME: right alt, right ctrl, right shift, cmds */
-        { "alt", "<Alt>" },
-        { "ralt", "<Alt>" },
-        { "rightalt", "<Alt>" },
-        { "right-alt", "<Alt>" },
-        { "lalt", "<Alt>" },
-        { "leftalt", "<Alt>" },
-        { "left-alt", "<Alt>" },
-
-        { "ctrl", "<Ctrl>" },
-        { "rctrl", "<Ctrl>" },
-        { "rightctrl", "<Ctrl>" },
-        { "right-ctrl", "<Ctrl>" },
-        { "lctrl", "<Ctrl>" },
-        { "leftctrl", "<Ctrl>" },
-        { "left-ctrl", "<Ctrl>" },
-
-        { "shift", "<Shift>" },
-        { "rshift", "<Shift>" },
-        { "rightshift", "<Shift>" },
-        { "right-shift", "<Shift>" },
-        { "lshift", "<Shift>" },
-        { "leftshift", "<Shift>" },
-        { "left-shift", "<Shift>" },
-
-        { "cmd", "<Ctrl>" },
-        { "rcmd", "<Ctrl>" },
-        { "rightcmd", "<Ctrl>" },
-        { "right-cmd", "<Ctrl>" },
-        { "lcmd", "<Ctrl>" },
-        { "leftcmd", "<Ctrl>" },
-        { "left-cmd", "<Ctrl>" },
-
-        { "win", "<Super>" },
-        { "rwin", "<Super>" },
-        { "rightwin", "<Super>" },
-        { "right-win", "<Super>" },
-        { "lwin", "<Super>" },
-        { "leftwin", "<Super>" },
-        { "left-win", "<Super>" },
-
-        { "esc", "Escape" },
-        /* { "escape", "Escape" }, */
-
-        { "ins", "Insert" },
-        /* { "insert", "Insert" }, */
-
-        { "del", "Delete" },
-        /* { "delete", "Delete" }, */
-
-        { "pgup", "Page_Up" },
-        { "pageup", "Page_Up" },
-        { "pgdn", "Page_Down" },
-        { "pagedown", "Page_Down" },
-
-        /* { "home", "home" }, */
-        /* { "end", "end" }, */
-        /* { "space", "space" }, */
-
-        { "enter", "Return" },
-
-        /* { "tab", "tab" }, */
-        /* { "f1", "F1" }, */
-        /* { "f2", "F2" }, */
-        /* { "f3", "F3" }, */
-        /* { "f4", "F4" }, */
-        /* { "f5", "F5" }, */
-        /* { "f6", "F6" }, */
-        /* { "f7", "F7" }, */
-        /* { "f8", "F8" }, */
-        /* { "f9", "F9" }, */
-        /* { "f10", "F10" }, */
-        /* { "f11", "F11" }, */
-        /* { "f12", "F12" } */
-    };
-
-    for (i = 0; i < G_N_ELEMENTS(keys); ++i) {
-        if (g_ascii_strcasecmp(keys[i].ctrl, key) == 0)
-            return g_strdup(keys[i].gtk);
-    }
-
-    return g_ascii_strup(key, -1);
-}
-
-static gchar*
-ctrl_key_to_gtk_accelerator(const gchar *key)
-{
-    gchar *accel, **k, **keyv;
-
-    keyv = g_strsplit(key, "+", -1);
-    g_return_val_if_fail(keyv != NULL, NULL);
-
-    for (k = keyv; *k != NULL; k++) {
-        gchar *tmp = *k;
-        *k = ctrl_key_to_gtk_key(tmp);
-        g_free(tmp);
-    }
-
-    accel = g_strjoinv(NULL, keyv);
-    g_strfreev(keyv);
-
-    return accel;
-}
-
 static void
 app_notified(VirtViewerApp *app,
              GParamSpec *pspec,
@@ -635,7 +522,7 @@ spice_ctrl_notified(SpiceCtrlController *ctrl,
             }
             *key = '\0';
 
-            gchar *accel = ctrl_key_to_gtk_accelerator(key + 1);
+            gchar *accel = spice_hotkey_to_gtk_accelerator(key + 1);
             guint accel_key;
             GdkModifierType accel_mods;
             gtk_accelerator_parse(accel, &accel_key, &accel_mods);
diff --git a/src/virt-viewer-util.c b/src/virt-viewer-util.c
index 81704b9..48a6978 100644
--- a/src/virt-viewer-util.c
+++ b/src/virt-viewer-util.c
@@ -295,6 +295,119 @@ void virt_viewer_util_init(const char *appname)
     g_set_application_name(appname);
 }
 
+static gchar *
+ctrl_key_to_gtk_key(const gchar *key)
+{
+    int i;
+
+    static const struct {
+        const char *ctrl;
+        const char *gtk;
+    } keys[] = {
+        /* FIXME: right alt, right ctrl, right shift, cmds */
+        { "alt", "<Alt>" },
+        { "ralt", "<Alt>" },
+        { "rightalt", "<Alt>" },
+        { "right-alt", "<Alt>" },
+        { "lalt", "<Alt>" },
+        { "leftalt", "<Alt>" },
+        { "left-alt", "<Alt>" },
+
+        { "ctrl", "<Ctrl>" },
+        { "rctrl", "<Ctrl>" },
+        { "rightctrl", "<Ctrl>" },
+        { "right-ctrl", "<Ctrl>" },
+        { "lctrl", "<Ctrl>" },
+        { "leftctrl", "<Ctrl>" },
+        { "left-ctrl", "<Ctrl>" },
+
+        { "shift", "<Shift>" },
+        { "rshift", "<Shift>" },
+        { "rightshift", "<Shift>" },
+        { "right-shift", "<Shift>" },
+        { "lshift", "<Shift>" },
+        { "leftshift", "<Shift>" },
+        { "left-shift", "<Shift>" },
+
+        { "cmd", "<Ctrl>" },
+        { "rcmd", "<Ctrl>" },
+        { "rightcmd", "<Ctrl>" },
+        { "right-cmd", "<Ctrl>" },
+        { "lcmd", "<Ctrl>" },
+        { "leftcmd", "<Ctrl>" },
+        { "left-cmd", "<Ctrl>" },
+
+        { "win", "<Super>" },
+        { "rwin", "<Super>" },
+        { "rightwin", "<Super>" },
+        { "right-win", "<Super>" },
+        { "lwin", "<Super>" },
+        { "leftwin", "<Super>" },
+        { "left-win", "<Super>" },
+
+        { "esc", "Escape" },
+        /* { "escape", "Escape" }, */
+
+        { "ins", "Insert" },
+        /* { "insert", "Insert" }, */
+
+        { "del", "Delete" },
+        /* { "delete", "Delete" }, */
+
+        { "pgup", "Page_Up" },
+        { "pageup", "Page_Up" },
+        { "pgdn", "Page_Down" },
+        { "pagedown", "Page_Down" },
+
+        /* { "home", "home" }, */
+        /* { "end", "end" }, */
+        /* { "space", "space" }, */
+
+        { "enter", "Return" },
+
+        /* { "tab", "tab" }, */
+        /* { "f1", "F1" }, */
+        /* { "f2", "F2" }, */
+        /* { "f3", "F3" }, */
+        /* { "f4", "F4" }, */
+        /* { "f5", "F5" }, */
+        /* { "f6", "F6" }, */
+        /* { "f7", "F7" }, */
+        /* { "f8", "F8" }, */
+        /* { "f9", "F9" }, */
+        /* { "f10", "F10" }, */
+        /* { "f11", "F11" }, */
+        /* { "f12", "F12" } */
+    };
+
+    for (i = 0; i < G_N_ELEMENTS(keys); ++i) {
+        if (g_ascii_strcasecmp(keys[i].ctrl, key) == 0)
+            return g_strdup(keys[i].gtk);
+    }
+
+    return g_ascii_strup(key, -1);
+}
+
+gchar*
+spice_hotkey_to_gtk_accelerator(const gchar *key)
+{
+    gchar *accel, **k, **keyv;
+
+    keyv = g_strsplit(key, "+", -1);
+    g_return_val_if_fail(keyv != NULL, NULL);
+
+    for (k = keyv; *k != NULL; k++) {
+        gchar *tmp = *k;
+        *k = ctrl_key_to_gtk_key(tmp);
+        g_free(tmp);
+    }
+
+    accel = g_strjoinv(NULL, keyv);
+    g_strfreev(keyv);
+
+    return accel;
+}
+
 /*
  * Local variables:
  *  c-indent-level: 4
diff --git a/src/virt-viewer-util.h b/src/virt-viewer-util.h
index 1c29cab..43e3017 100644
--- a/src/virt-viewer-util.h
+++ b/src/virt-viewer-util.h
@@ -48,6 +48,8 @@ gulong virt_viewer_signal_connect_object(gpointer instance,
                                          gpointer gobject,
                                          GConnectFlags connect_flags);
 
+gchar* spice_hotkey_to_gtk_accelerator(const gchar *key);
+
 #endif
 
 /*
-- 
1.7.11.7




More information about the virt-tools-list mailing list